我是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;
});
}
}
答案 0 :(得分:0)
要使用angular2服务,您需要做两件事。首先,您需要在服务之上的@Injectable
注释。
如果您想将服务注入彼此,您需要在NgModule上提供这些服务,如下所示:
@NgModule({
selector: 'my-app',
providers: [NameService]
}):
如果你想将服务注入另一个服务/组件,你可以只使用typescript并使用这样的构造函数注入:
constructor(private secretService: SecretService) {}
答案 1 :(得分:0)
而不是
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 ...'将创建一个真正的打字稿类对象。