1
以下のコードを参照してください。入力値が変更されると、textchange関数が呼び出されます。ただし、InputMaskComponentのtextプロパティは変更されません。私のコードに何が間違っているのか分かりません。入力要素の角2デュアルデータバインディングが機能しない
InputMaskComponent.ts
import { Component, ViewChild, AfterViewInit, ElementRef, Attribute } from '@angular/core';
@Component({
selector:'inputs:mask',
templateUrl:'InputMaskComponent.html'
})
export class InputMaskComponent{
pattern: string;
text: string;
dom: Element;
constructor(el:ElementRef, @Attribute('pattern') pattern:string){
this.dom = el.nativeElement;
this.pattern = pattern;
}
textchange(event:any){
console.log(this.text, event);
}
}
InputMaskComponent.html
<div>
<input type="text"
[placeholder]="pattern"
(input)="textchange($event)"
[(value)]="text" />
<span #child class="hidden"><ng-content></ng-content></span>
</div>
RootComponent.html
<input:mask pattern="(###) ### - ###">(012) 345 - 678</input:mask>
「入力」、「[(値)]」とは何ですか?なぜあなたは '[(ngModel)]'を使わないのですか? – micronyks
私は同意します。なぜあなたは '[(ngModel)]を使わないのですか? – yurzui
@micronyksと@yurzuiは正しいですが、双方向バインディングのために 'NgModel'ディレクティブを使うべきですが、' [ngModel] 'と'(ngModelChange) 'の2つの部分に分割する必要があります。入力が変わると機能します。 '[(値)]を' [ngModel] 'と'(入力) 'で'(ngModelChange) 'に置き換えると、すべてが魅力的に機能します。 –