Ошибка кода Angular 4 -> 6 "Нет директивы с"exportAs", установленным в"ngModel""

Итак, я купил Mosh's Angular 4, не зная, что это Angular 4, а последний - Angular 6.

Да, я слышал, что разница между 4 и 6 невелика с точки зрения кодирования, но выслушайте меня.

В одной из лекций о шаблонно-управляемых формах он использует этот код:

<form>
  <div class="form-group">
      <label for="firstName">First Name</label>
      <input             <-- WE ARE LOOKING AT THIS ELEMENT
        ngModel
        name="firstName"
        id="firstName"
        type="text"
        class="form-control" />
  </div>
  <div class="form-group">
    <label for="comment">Comment</label>
    <textarea id="comment" cols="30" rows="10" class="form-control"></textarea>
  </div>
  <button class="btn btn-primary">Submit</button>
</form>

Поэтому я повторяю, что в Angular я установил (позже я узнал, что он использует 4, а я установил 6), и он работает нормально.

Теперь он хочет показать, что ngModel выглядит как печать ngModel объект на консоль, поэтому он создает переменную и регистрирует ее, добавив log(msg) { console.log(msg); } к .ts файл, а теперь <intput> упомянутое выше выглядит так:

<input 
    ngModel
    name="firstName"
    #firstName="ngModel"         <-- ADDED
    (change)="log(firstName)"    <-- ADDED
    id="firstName"
    type="text"
    class="form-control" />

Таким образом он компилирует это, это работает, консоль регистрирует ngModel просто хорошо. Итак, я компилирую тот же код, и я получаю это:

Uncaught Error: Template parse errors:
There is no directive with "exportAs" set to "ngModel" ("
        ngModel
        name="firstName"
        [ERROR ->]#firstName="ngModel"
        (change)="log(firstName)"
        id="firstName"
"): ng:///AppModule/ContactFormComponent.html@6:8
    at syntaxError (compiler.js:1021)
    at TemplateParser.push../node_modules/@angular/compiler/fesm5/compiler.js.TemplateParser.parse (compiler.js:14830)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._parseTemplate (compiler.js:24018)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileTemplate (compiler.js:24005)
    at compiler.js:23948
    at Set.forEach (<anonymous>)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileComponents (compiler.js:23948)
    at compiler.js:23858
    at Object.then (compiler.js:1012)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileModuleAndComponents (compiler.js:23857)

Итак, разумеется, я гуглю, чтобы выяснить, почему это происходит, и затем я вижу этот вопрос в стеке и вижу, что на него нет ответов. Я сейчас здесь, надеясь, что кто-нибудь придет и скажет мне: "Бедная душа, у вас опечатка" или что-то в этом роде.

ПРИМЕЧАНИЕ 1 Я надеюсь, что я не нарушаю никаких законов, цитируя лекции, которые я заплатил от г-на Моша. Если это так, пожалуйста, обратите внимание, я сниму этот вопрос. Кроме того, я искренне рекомендую его курс. 10/10.

ПРИМЕЧАНИЕ 2. Пожалуйста, имейте в виду вопрос, на который я наткнулся, на который не был дан ответ во время публикации этого вопроса. Мой немного более детальный, так что я бы не сказал, что это дубликат, но было бы неплохо, чтобы на этот вопрос тоже ответили.

ВОПРОС: Если до сих пор не ясно: что делает There is no directive with "exportAs" set to "ngModel" значит, а как мне это исправить? Каковы принципиальные различия между Angular 4 и 6, которые делают код из A4 недействительным в A6?

Я полностью новичок в угловой между прочим.

0 ответов

Другие вопросы по тегам