2017-09-13 93 views
0

我为什么会在这个代码中的错误错误访问定义对象的实例的属性

错误源于(其作为代码主要是这里的代码,你必须从角文档熟悉)与星行...

import { Component } from '@angular/core'; 

export class Hero { 
    id: number; 
    name: string; 
} 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
    title = 'Tour of Heroes'; 
    hero: Hero = { 
    id: 1, 
    name: 'Windstorm' 
    }; 

    if (hero.name === 'prekazi') { // <--****************** 
    // do something 
    } 
} 

的错误是

Failed to compile. 

/Users/.../Desktop/angular-tour-of-heroes/src/app/app.component.ts (20,11): ',' expected. 

这是由于该行:

if (hero.name === 'prekazi') { 

为什么我们不能用点符号来得到英雄实例的属性?有人可以友好地指点我在这里错过了什么吗?

回答

1

您的代码在类内,但不在类的方法内。例如,如果您将其添加到ngOnInit,它就会生效:

export class AppComponent { 
    title = 'Tour of Heroes'; 
    hero: Hero = { 
     id: 1, 
     name: 'Windstorm' 
    }; 

    ngOnInit() { 
     if (this.hero.name === 'prekazi') { // <--****************** 
      alert('That\'s my hero! ') 
     } 
    } 
} 
+0

对!我真是个小丑!谢谢你的收获!它也是这样工作的:''constructor(){ if(this.hero.name ==='prekazi'){ alert('That'is my hero!') } }' –

+0

但是当我通过预期宾果游戏字符串'prekazi',我没有得到警报!角度是否以不同的方式做出了古老的js警报? –

+0

@AverageJoe对于这个例子来说,构造函数也不错。一般来说,我倾向于使用像'ngOnInit'这样的钩子,因为当所有其他数据都可用时(例如通过'Input'将数据传递到组件中)。 –