Обратитесь к коду ниже, всякий раз, когда изменяется входное значение, вызывается функция обмена текстовыми сообщениями. Однако свойство text InputMaskComponent никогда не изменяется. Не уверен, что случилось с моим кодом.Угловая 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)', потому что вы хотите вызвать когда вход изменяется. Замените '[(значение)]' на '[ngModel]' и '(input)' на '(ngModelChange)', и все будет работать как шарм. –