Javascript angular2 ngFor won';行不通

Javascript angular2 ngFor won';行不通,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我试图让一些文本框在用户每次单击按钮时都出现。 我和ngFor一起做这件事。 出于某种原因,ngFor不会迭代。 我已经尝试使用slice来更改数组引用,但是文本框仍然不会出现 知道我做错了什么吗?? 下面是HTML和组件代码。 谢谢 导出类组件{ 主题名称=[]; addSubject(subjectName:string){ if(主题名称){ this.subjectsNames.push(subjectName); this.subjectsNames.slice(); console

我试图让一些文本框在用户每次单击按钮时都出现。 我和ngFor一起做这件事。 出于某种原因,ngFor不会迭代。 我已经尝试使用slice来更改数组引用,但是文本框仍然不会出现

知道我做错了什么吗?? 下面是HTML和组件代码。 谢谢

导出类组件{
主题名称=[];
addSubject(subjectName:string){
if(主题名称){
this.subjectsNames.push(subjectName);
this.subjectsNames.slice();
console.log(subjectName);
console.log(this.subjectsNames);
}
};


添加

您缺少的*in*ngFor

<li *ngFor="let subject of subjectsNames">


您缺少的*in*ngFor

<li *ngFor="let subject of subjectsNames">


控件写入subjectName的方式不存在,因为数组为空,因此
*ngFor
不会呈现它。单击“添加”按钮会导致异常,即
未定义的
上不存在该值,其中
未定义的
实际上是
subjectName

将其移出
*ngFor
将使事情正常进行:

<input #subjectName type="text" />
  <ul>
    <li *ngFor="let subject of subjectsNames">
      <span>
      {{subject}}
       <input id="subjectGrade" type="number"/>
       <input id="subjectWeight" type="number"/>
      </span>
    </li>
  </ul>

    {{subject}}
我怀疑您还想在迭代主题名称时进一步绑定数据,但这超出了问题的范围


这里有一个提示:

控件写入subjectName的方式不存在,因为数组是空的,因此,
*ngFor
不会呈现它。单击Add按钮会导致一个异常,即值不存在于
undefined
上,其中
undefined
实际上是
subjectName
> 将其移出
*ngFor
将使事情正常进行:

<input #subjectName type="text" />
  <ul>
    <li *ngFor="let subject of subjectsNames">
      <span>
      {{subject}}
       <input id="subjectGrade" type="number"/>
       <input id="subjectWeight" type="number"/>
      </span>
    </li>
  </ul>

    {{subject}}
我怀疑您还想在迭代主题名称时进一步绑定数据,但这超出了问题的范围


这里有一个提示:

首先,您在ngFor中丢失了*in*。 第二次推出

<input #subjectName type="text" />


从ngFor开始,应该是有效的。

首先,您在*ngFor中缺少*。 第二次推出

<input #subjectName type="text" />

从ngFor,应该可以工作。

您通过ID引用
#subjectName
文本框,但它在
*ngFor
中。调用
addSubject()时,它不会重复,也不会有ID冲突吗
在您的点击处理程序中,您引用的是哪个文本框?我对此感到困惑。您通过ID引用
#subjectName
文本框,但它在
*ngFor
中。调用
addSubject()时,它不会重复,也不会有ID冲突吗
在单击处理程序中,您引用的是哪个文本框?我对此感到困惑。