2017-08-29 55 views
1

我有這個類:打字稿 - 類的接取財產使用它的字符串名稱

import { SoapNotePage } from "../pages/forms/soap-note/soap-note"; 

export class FormMapper { 
    public static SOAP_NOTE = SoapNotePage; 
} 

這是很容易訪問此屬性,請看下面的例子:

open(item){ 
    if(item.id == 1){ 
     this.navCtrl.push(FormMapper.SOAP_NOTE, { patientId: 509070, formId: 75598 }); 
    } 
} 

但我想要通過它的字符串名稱來動態地訪問「SOAP_NOTE」屬性,例如像這樣:

this.navCtrl.push(FormMapper['SOAP_NOTE'], { patientId: 509070, formId: 75598 }); 

該rea兒子我問這是函數「open(item)」的「item」參數可能包含FormMapper類的屬性名稱。

有沒有辦法做到這一點?

+2

不確定問題出在哪裏,您可以使用索引器訪問靜態成員。 'FormMapper ['SOAP_NOTE']'應該在Typescript中有效。 –

回答

4

你可以這樣做:

function open(item: keyof typeof FormMapper) { 
    console.log(FormMapper[item]); 
} 

這樣,你限制item值是FormMapper類的鑰匙,而編譯器不會抱怨。