Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 2使用ngValue传递对象返回无法读取属性。。。未定义的_Angular_Angular2 Template_Angular2 Forms - Fatal编程技术网

Angular 2使用ngValue传递对象返回无法读取属性。。。未定义的

Angular 2使用ngValue传递对象返回无法读取属性。。。未定义的,angular,angular2-template,angular2-forms,Angular,Angular2 Template,Angular2 Forms,当我在模板中使用此选项时: <select [(ngModel)]="selectedCompany" class="form-control"> <option *ngFor="let company of companies" [ngValue]="company">{{company.Name}}</option> </select> {{selectedCompany}} 我得到以下错误: 异常:未捕获(承诺中):错误:./Hom

当我在模板中使用此选项时:

<select [(ngModel)]="selectedCompany" class="form-control">
    <option *ngFor="let company of companies" [ngValue]="company">{{company.Name}}</option>
</select>
{{selectedCompany}}
我得到以下错误:

异常:未捕获(承诺中):错误:./HomeComponent类HomeComponent-内联模板中的错误:60:10原因:无法读取未定义的属性“Name”


我正试图弄明白为什么我会犯这样的错误。我认为该属性存在是因为
{{{company.Name}}
起作用。

这是因为在模板呈现时未定义
selectedCompany
。您有两种解决方案:

  • 使用安全导航操作符(
    )来“保护”您的模板,直到
    所选公司
    填充了以下数据:

    {{selectedCompany?.Name}}
    
  • 初始化组件中选定的公司变量:

    selectedCompany = {};
    

  • 这两种方法都可以解决问题。

    就是这样,解决了。谢谢!:)@拉文伦不客气!:)我知道你是新来的,所以请考虑接受和支持我的回答,如果它对你有帮助的话。(我的答案左侧的勾号和向上箭头按钮)在第二种情况下,名称为undefined@RomanC
    Name
    未定义,但
    selectedCompany
    未定义。如果仔细阅读错误,您会发现这就是本例中的问题所在。
    selectedCompany = {};