[英]Angular2 Service call Model Method
我是angular2的新手,所以我會盡量讓這個問題變得清晰。 我希望在我的模型中有一個方法可以從我的服務中調用。 現在我試着替換這個名字。
這是我的模特
export class Secret {
public name: string;
constructor (
public id: number,
public type: string,
public visible_data: any,
public secrets?: any,
public group_id?: number,
public group_name?: string
) {
this.name = this.myName();
}
public myName(): string {
return this.name = "whaddup"
}
}
和我的服務方法
/*
* get secrets
*/
public getSecrets(): Promise<Secret[]> {
let tempArray = [];
return this.sdk.list_secrets()
.then((resp) => {
resp.map((item) => {
tempArray.push({
id: item.id,
name: this.secret.myName(),
type: item.type,
visible_data: {
"username": item.data
}
}); // end push
});
return tempArray;
})
.catch((err) => {
console.error(err);
});
}
list.component.ts
代碼:
export class ListComponent implements OnInit {
public constantArray: Secret[];
private secrets: Secret[];
private secret: Secret;
constructor(private secretService: SecretService) { }
public ngOnInit() {
this.getSecrets();
}
public getSecrets() {
this.secretService.getSecrets()
.then((data) => {
this.secrets = data;
this.constantArray = data;
});
}
}
要使用angular2服務,您需要做兩件事。 首先,您需要在服務之上的@Injectable
注釋。
如果你想將服務注入彼此,你需要在你的NgModule上提供它們,如下所示:
@NgModule({
selector: 'my-app',
providers: [NameService]
}):
如果您想將服務注入另一個服務/組件,您可以只使用typescript並使用構造函數注入,如下所示:
constructor(private secretService: SecretService) {}
代替
tempArray.push({
id: item.id,
name: this.secret.myName(),
type: item.type,
visible_data: {
"username": item.data
}); // end push
你應該做
tempArray.push(new Secret(item.id, ...));
原因:在原始代碼中,推送到數組的對象是普通的舊javascript對象,它們不是typescript對象。 'new ...'將創建一個真正的打字稿類對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.