Angular2 ngModel-var值与this.var值不同

时间:2016-11-02 08:25:14

标签: angular input ngmodel

我的子组件中的ngModel值有一些奇怪的行为。 HTML的代码:

<input type="text" pattern="^[a-zA-Z]$"
                           class="form-control" required="true"
                           id="myId" 
                           [(ngModel)]="kName">

kName是一个输入字段(@kName:string),它将从父组件填充。 我可以看到&#34; this.kName&#34;每次从父组件获取新值。 但是当我在这个领域采取一些行动时:

this.kName = undefined;

然后我想再从父级填充kName,我的kName-current值不会出现在html-output上,但是我可以看到:this.kName 当我尝试这样做时:

<input type="text" pattern="^[a-zA-Z]$"
                           class="form-control" required="true"
                           id="myId" 
                           [(ngModel)]="{{this.kName}}">

我通过html-pattern在init上收到错误,因为kName未定义。 如何刷新ngModel值? 也许我还有其他一些问题......

1 个答案:

答案 0 :(得分:1)

好像你在任何地方都有另一个问题..

您的控制台中是否有任何错误消息?

看看这个plunker,按预期工作:https://plnkr.co/edit/2VUOimDCMvPSNHD1mX69?p=preview

你可以&#34;清除&#34;它并从父组件重写它。

import {Component, NgModule, Input} from '@angular/core'
import {FormsModule} from '@angular/forms'
import {BrowserModule} from '@angular/platform-browser'

@Component({
  selector: 'my-child',
  template: `
    <input [(ngModel)]="kName" />
    <button (click)="clearFunction()">clear</button>
    <br />
    {{kName}}
  `,
})
export class Child {
  @Input() kName: string;

  constructor() { }

  clearFunction() {
    this.kName = undefined;
  }
}

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2 (click)="changeSomething()">Hello {{name}}</h2>
      <my-child [kName]="myKname"></my-child>
    </div>
  `,
})
export class App {
  name:string;
  myKname: string;

  constructor() {
    this.name = 'Angular2'
  }

  changeSomething() {
    this.myKname = Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
  }
}

@NgModule({
  imports: [ BrowserModule, FormsModule ],
  declarations: [ App, Child ],
  bootstrap: [ App ]
})
export class AppModule {}