【问题标题】:Assign initial value for dynamically generated ngModel Angular (2/4)为动态生成的 ngModel Angular (2/4) 分配初始值
【发布时间】:2017-11-13 21:35:46
【问题描述】:

我发现我可以使用this method 创建动态 ngModel 变量。这很好用,因为我正在尝试基于列表生成一堆文本输入,然后在它们上放置一个 ngModel 变量。我遇到的问题是我想为文本框分配一个初始值,以便它显示该值(以及 ngModel 的值),然后显然用户可以在框中键入,更改ngModel 变量。

不过,我想不出办法。如果我为输入设置一个值,它就会被清除。它还需要使用 ngModel 而不是 2 路数据绑定({{}} 方法)来完成,因为我需要能够稍后引用该变量。

下面是我尝试让它工作。您可以假设“items”是一个字符串值列表。

<ul>
 <li *ngFor = "let item of items">
  <input type = "text" [(ngModel)] = "input[item]" value = '{{item}}'>
 </li>
</ul> 

总的来说,我对 Angular 和 web 开发人员也很陌生,所以我可能会遗漏一些非常明显的东西,如果是这种情况,我深表歉意。无论如何,我真的很感激任何帮助。

【问题讨论】:

    标签: angular


    【解决方案1】:

    您应该在控制器中执行此操作。

    @Component({
        // component configuration
    })
    class MyController implements OnInit {
    
        public input: Object = {
            // your data
        };
    
        public items: Array<Object> = [
            // your list of items
        ];
    
        ngOnInit() {
    
            this.items.forEach(item => {
                input[item] = item;
            });
    
        }
    
    }
    

    【讨论】:

    • 为此欢呼,这是有道理的,我确实考虑过以类似的方式来做,我只是好奇是否可以从模板中实现。不过,这应该是一个很好的解决方案,非常感谢!
    • 在 Angular 2+ 中,他们试图“强制”开发人员将逻辑从模板转移到控制器,因此,我猜是删除了 ngInit 指令。
    • 哦,这很有趣,我不知道这是他们想要的方向。再次感谢您的帮助伙伴!
    猜你喜欢
    • 2017-10-21
    • 2014-10-29
    • 2018-01-19
    • 2017-01-08
    • 2017-05-03
    • 2017-10-02
    • 2012-09-15
    • 2020-05-04
    • 2017-12-07
    相关资源
    最近更新 更多