2017-10-04 28 views
0

我有這個類,我實例化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(); 
    } 
} 

名稱服務,認證服務,home.component.html顯示器{{userState.CurrentName}},和getNextName的()工作正常。

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

就好像SelectedNames是未定義的一樣。

什麼給?

乾杯

回答

1

好吧,我想通了。

我需要實例UserState這樣的:

userState : UserState = new UserState(); 

爲了正確地構建它。

相關問題