我在我的模板中有这个:
<input type="button" value="add" (click)="addEnvVar()"/>
<div *ngFor="let envVar of application.env_vars">
<input type="text" name="key" [(ngModel)]="envVar.key">
<input type="text" name="value" [(ngModel)]="envVar.value">
</div>
Run Code Online (Sandbox Code Playgroud)
背后的代码addEnvVar():
this.application.env_vars.push({key:'', value:''});
初始化组件时,内部有一个对象env_vars,它被渲染得很好(<input>填充了字段).单击"添加"后,我可以在控制台中看到env_vars中确实有两个对象(第二个是我刚添加的'空'对象),在视图中确实有两个<div>s envVar,但是所有4个 <input>字段是空的.
我究竟做错了什么?
UPDATE
我认为问题在于,当ngFor生成多个div输入时,每个输入div都获得相同的硬编码name属性(在我的情况下 - "key"和"value"),并且值以某种方式附加到该属性.我改name="key"到name="key_{{i}}"(i是一个模板变量持有ngForindex属性).
问题是,这是要走的路吗?还是我还缺少什么?
在Node.js v7.8.0中我有一个模块foo.js:
class Foo {
async bar() { return 'bar' }
}
Run Code Online (Sandbox Code Playgroud)
在主模块中,app.js我将Bluebird分配给全局Promise:
global.Promise = require('bluebird').
在'app.js'我有:
const Foo = require('./foo);
let foo = new Foo();
foo.bar().tap(res => console.log(res));
Run Code Online (Sandbox Code Playgroud)
我假设因为我用Bluebird替换了全局Promise,对异步函数的调用将返回一个Bluebird的承诺(有.tap),但显然我错了,因为我收到了错误:
TypeError: foo.bar(...).tap is not a function
有没有办法实现我的愿望?