Angular 指令:更改模型不会更新视图
Angular directive: changing the model doesn't update the view
[抱歉我的英语不好]
我有一个简单的贷款计算器。
"Principal" 输入有一个自动更正值的指令。
如果用户键入 100,则指令会将其乘以 1000。
但是,PMT 没有更新。
示例代码:
https://stackblitz.com/edit/angular-srdbew?file=src%2Fapp%2Fthousands.directive.ts
感谢您的帮助。
您需要从指令中输出一个事件来更新组件,以便组件识别更改。现在它正在更改值但不在 Angular 上下文中更新。检查实施 here
更新你的指令
import { Directive, HostListener, ElementRef, OnInit, EventEmitter, Output } from "@angular/core";
@Directive({
selector: '[appThousands]'
})
export class ThousandsDirective {
// Here declare output event
@Output() ngModelChange = new EventEmitter(); //declare output
constructor(private element: ElementRef<HTMLInputElement>) { }
@HostListener("change")
onChange() {
const input = this.element.nativeElement;
const value = input.value;
if (value.startsWith("=")) {
let exactValue = value.substr(1);
input.value = exactValue;
}
else if (+value < 1000) {
input.value = (+value * 1000).toString();
}
// emit event here
this.ngModelChange.emit(this.element.nativeElement.value); //add event here
}
}
[抱歉我的英语不好]
我有一个简单的贷款计算器。
"Principal" 输入有一个自动更正值的指令。
如果用户键入 100,则指令会将其乘以 1000。
但是,PMT 没有更新。
示例代码: https://stackblitz.com/edit/angular-srdbew?file=src%2Fapp%2Fthousands.directive.ts
感谢您的帮助。
您需要从指令中输出一个事件来更新组件,以便组件识别更改。现在它正在更改值但不在 Angular 上下文中更新。检查实施 here
更新你的指令
import { Directive, HostListener, ElementRef, OnInit, EventEmitter, Output } from "@angular/core";
@Directive({
selector: '[appThousands]'
})
export class ThousandsDirective {
// Here declare output event
@Output() ngModelChange = new EventEmitter(); //declare output
constructor(private element: ElementRef<HTMLInputElement>) { }
@HostListener("change")
onChange() {
const input = this.element.nativeElement;
const value = input.value;
if (value.startsWith("=")) {
let exactValue = value.substr(1);
input.value = exactValue;
}
else if (+value < 1000) {
input.value = (+value * 1000).toString();
}
// emit event here
this.ngModelChange.emit(this.element.nativeElement.value); //add event here
}
}