我知道这不是最佳的,但我有常规的 javascript 代码更改我组件中的属性变量。
这样做的原因是我的eval
组件中有动态 javascript(来自 Google Blockly)正在运行 ()。
这是组件模板:
<input #textInput
[attr.max-value]="maxValue"
type="number"
style="width: 495px;"
(change)="onChange($event)"
[id]="key"
class="form-control"
[disabled]="disabled"
value="{{value}}" />
以及组件代码:
export class NumberStepComponent extends BaseStepComponent {
/** number-step ctor */
constructor() {
super();
}
@ViewChild("textInput") textInput: ElementRef;
private _maxValue: string;
get maxValue(): string {
return this._maxValue;
}
set maxValue(val: string) {
this._maxValue = val;
console.log("Changed ** : " + val);
}
}
当我maxValue
从 Angular 更改时,我确实触发了 setter 代码。但是当 jQuery 执行此操作时,不会触发该设置器。
IE:
var code = `$('#ID').attr('max-value', "5")`;
eval(code);
我已经尝试在“区域内”执行代码,认为这将使 Angular 保持最新:
this.ngZone.run(() => {
var code = `$('#ID').attr('max-value', "5")`;
eval(code);
});
也不会触发设置器。有什么方法可以做到这一点?