无法读取属性'推送'未定义的,即使是实例化

时间:2017-10-04 18:51:39

标签: angular typescript

我有这个类,我实例化SelectedNames数组。我已经尝试在构造函数方法签名和构造函数方法体中实例化它。

userstate.model.ts

export class UserState{
    constructor(
        public StartsWithFilters: string[],
        public EndsWithFilters: string[],
        public ContainsFilters: string[],
        public EqualsFilters: string[],
        public SelectedNames: string[],
        public CurrentName : string
    ){
        this.SelectedNames = [];
    }
}

在这个实例化UserState的类中。

home.component.ts

export class HomeComponent implements OnInit {
    userState : UserState = {};

    constructor(
        private nameService : NameService,
        public auth : AuthService) {
    }

    getNextName(){
        this.nameService.getNextName()
            .subscribe(
                name => this.userState.CurrentName = name.NameText,
                error => alert("getNextName: error")
            );
    }

    selectName(){
        this.userState.SelectedNames.push(this.userState.CurrentName);
    }

    ngOnInit() { 
    }

    btnNextClickedEvent(): void {
        this.getNextName();
    }

    btnSelectClickedEvent(): void {
        this.selectName();
    }
}

NameService,身份验证服务,home.component.html显示{{userState.CurrentName}},getNextName()工作正常。

Error in selectName(): Cannot read property 'push' of undefined. 

好像SelectedNames未定义。

是什么给出了?

干杯

1 个答案:

答案 0 :(得分:1)

好的,我明白了。

我需要像这样实例化UserState:

userState : UserState = new UserState();

为了正确构建它。