They are nouns that mean "to misunderstand". They are interchangeable in many cases, but the nuance is slightly different.
"誤解" is used when describing situations in which you interpret the meaning of something in a negative way.
"勘違い" is used when describing situations in which you interpret the meaning of something in a wrong way because of your carelessness or lack of information.
Meg is asking Amy about what she did last night. Amy has a boyfriend but she seemed to have been with another guy.
- Meg: I saw you with Ken at the cafe last night. You two looked really close.
昨夜カフェでケンと一緒だったでしょ。すごく仲が良さそうだった。 - Amy: Are you suspecting I'm cheating? Come on, don't get me wrong! He is just a friend.
もしかして、浮気していると思っている?ちょっと、誤解しないで!ただの友達だよ。
Amy's birthday is approaching.
- Amy: If I had a rich boyfriend like Ken, what would I ask him for my birthday gift?
もしケンみたいなお金持ちの彼氏がいたら、(誕生日プレゼントは)何を頼もうかな? - Meg: I don't think he is so rich. He owes my boyfriend some money.
そんなにお金持ちじゃないと思うよ。私の彼氏にお金を借りてるよ。 - Amy: I was under the impression that he was rich. He always wears high-end clothes.
お金持ちだって、勘違いしていた。いつもブランド物を着ているから。
Ken and Leo are talking about the meeting that is going to take place at 3 P.M.
- Ken: It's time for us to go to the meeting. Are you ready?
会議に行く時間だ。行ける? - Leo: It's still 1 P.M. We have two hours left until the meeting.
まだ一時じゃん。会議まで、あと二時間もあるよ。 - Ken: Did I mix up the time? Let me see..(He checks the email) I misread the email and thought the meeting was at 1 P.M.
あれ、時間を勘違いしたかな?えっと...メールを読み間違えて、一時からだと思っていた。