2017-03-27 150 views
0

我正在努力將數據從Angular服務傳遞到組件。我從一個簡單的模型類(./cet.model)通過Angular 2服務傳遞數據

export class CetModel { 
constructor(
    public waferDiameter: number = 10 
    ) {} 
} 

然後定義的角服務(./cet.service);

import { CetModel } from './cet.model'; 

export class CetService { 
    private cet: CetModel; 

    getCet() { 
    return this.cet; 
    }  
} 

和相關的角度分量;

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

import { CetService } from './cet.service'; 
import { CetModel } from './cet.model'; 

@Component({ 
    selector: 'cet-input', 
    templateUrl: './cet-input.component.html', 
    providers: [ CetService ] 
}) 

export class CetInputComponent { 
    constructor(public cetService: CetService){} 
    cet: CetModel = this.cetService.getCet(); 
    waferDiameter = this.cet.waferDiameter 
} 

的代碼生成沒有錯誤,但是當我嘗試在組件中顯示的模板中的變量「waferDiameter」我收到的錯誤;

「無法讀取未定義的屬性'waferDiameter'」。

我哪裏錯了?

import { CetModel } from './cet.model'; 

    export class CetService { 
     private cet = new CetModel(); 

     getCet() { 
     return this.cet; 
     }  
    } 

您還沒有創建的模型對象:

感謝

+0

我相信你缺少waferDiameter前面的「this」字,換句話說就是試試這個.waferDiameter = this.cet.waferDiameter,如果你的waferDiameter是組件類中聲明的字段,那當然是正確的 – Lys

+0

嗨。感謝您的反饋。如果我將角度組件代碼編輯爲'this.waferDiameter = this.cet.waferDiameter',那麼我會得到以下Linter和Build錯誤 - 「意外的令牌,期望構造函數,方法,訪問器或屬性」。 – Brasso

回答

2

cet.service如下更改代碼。這就是爲什麼this.cet返回undefined,你得到waferDiameter未定義。

+0

我試着編輯你的建議。我收到linter並生成錯誤 - 「提供的參數不匹配調用目標的任何簽名。」 – Brasso

+0

您在哪個文件中收到錯誤? – Darshita

+0

我的錯誤 - 您的解決方案確實有效 - 最後一個錯誤是由無關錯誤引起的。再次感謝。 – Brasso

相關問題