Angular 2 - 无法绑定到“ngModel”,因为它不是“输入”的已知属性

Posted

技术标签:

【中文标题】Angular 2 - 无法绑定到“ngModel”,因为它不是“输入”的已知属性【英文标题】:Angular 2 - Can't bind to 'ngModel' since it isn't a known property of 'input' 【发布时间】:2016-12-18 20:57:57 【问题描述】:

我在 plunker 中有一个 Angular 2 内联编辑组件。但突然我得到了上述错误。怎么回事?

Plunker 代码:http://plnkr.co/edit/3AODo6YGEhvPOKzloofz?p=preview

父组件:

<inline-edit [editEnable]="edit" [(ngModel)]="editableText" (onSave)="saveEditable($event)"></inline-edit>

子组件:

<div id="inlineEditWrapper" (click)="edit(value)" class="iedit">
    <!-- Editable value -->
    <a  [hidden]="editing"> value &nbsp;<i class="glyphicon glyphicon-pencil" data-hidden="editing"></i></a>

    <!--<span class="glyphicon glyphicon-pencil" [hidden]="editing"></span>-->

    <!-- inline edit form -->
    <form  #inlineEditForm="ngForm" class="inlineEditForm form-inline" (ngSubmit)="onSubmit(value)" [hidden]="!editing">
        <div class="form-group">

            <!-- inline edit control  -->
           <input style="margin-bottom:10px;" #inlineEditControl class="form-control" [(ngModel)]="value"/>

            <!-- inline edit save and cancel buttons -->
            <br/>
           <span >
                <button type="submit" class="btn btn-primary">Change</button>
                <button class="btn btn-default" (click)="cancel(value)">Cancel</button>
           </span>

        </div>
    </form>
</div>

【问题讨论】:

你用的是哪个 angular2 版本? Angular 2 RC4 版本。 【参考方案1】:

您可以按照以下步骤操作:

第 1 步:加载角度形式的包

'@angular/forms': 
      main: 'bundles/forms.umd.js',
      defaultExtension: 'js'

第 2 步:导入 disableDeprecatedForms,provideForms

import disableDeprecatedForms, provideForms from '@angular/forms';

bootstrap(App, [
   disableDeprecatedForms()
   provideForms()
]).catch(err => console.error(err));

第 3 步:从 inline-edit.component.ts 中的“@angular/forms”导入 ControlValueAccessor、NG_VALUE_ACCESSOR

第 4 步:将表单中的输入元素调整为:

<input style="margin-bottom:10px;" #inlineEditControl class="form-control" name="first_name" #first_name="ngModel" [(ngModel)]="value"/>

here 对我有用

【讨论】:

以上是关于Angular 2 - 无法绑定到“ngModel”,因为它不是“输入”的已知属性的主要内容,如果未能解决你的问题,请参考以下文章

无法将 [(ngModel)] 绑定到 Angular html

Angular 4.x - 无法绑定到“ngModel”,因为它不是“输入”的已知属性

在新的 Angular 2 表单中将 NgModel 绑定到 FormControl

使用 ngModel 的 Angular 2 双向绑定不起作用

使用 ngModel 的 Angular 2 双向绑定不起作用

使用 ngModel 的 Angular 2 双向绑定不起作用