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
 }
}