【问题标题】:Angular 2 can't change input value at ngOnInit()Angular 2 无法更改 ngOnInit() 的输入值
【发布时间】:2016-11-03 10:57:53
【问题描述】:

我需要在页面加载时更改输入的值。但是,我无法做到。这就是我在单独的 html 文件中创建输入的方式。

<form (submit)="some_function()">
<input (keypress)="some_function()" name="test" id="test-input" [(ngModel)]="test" [placeholder]="'NEED TO CHANGE INPUT TEXT' | translate"/>
<button type="submit">Submit </button>

然后在一个 ts 文件中我有这样的东西:

ngOnInit() {

    var element = document.getElementById("test-input");
    // If I console.log(element) I actually get it.

    element.textContent = "INPUT TEXT CHANGED??";
    // If I console.log(element.textContent) I get the input with changed text... but I can't see it otherwise

}

我在这里做错了什么?有什么帮助吗?

【问题讨论】:

  • 您可以更改 ngOnInit 中的输入值,就像您使用 ngModel 和输入一样:this.test = "new value"

标签: angular input


【解决方案1】:

@Input 变量在视图完全初始化之前不会传递给控制器​​(这是与 ngOnInit 不同的钩子)。首先,导入正确的钩子:

import { AfterViewInit } from "@angular/core";

然后声明你正在实现 AfterViewInit 钩子:

class YourController implements AfterViewInit

最后声明hook相关的方法:

ngAfterViewInit() {
    var element = document.getElementById("test-input");
    // If I console.log(element) I actually get it.

    element.textContent = "INPUT TEXT CHANGED??";
    // If I console.log(element.textContent) I get the input with changed text... but I can't see it otherwise
}

应该做的伎俩(:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2019-02-25
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多