Javascript Angular2服务调用模型方法
我是安格拉尔的新手,所以我会尽量把这个问题弄清楚。我想在我的模型中有一个方法,我可以从我的服务中调用它。现在我用它来替换这个名字 这是我的模型Javascript Angular2服务调用模型方法,javascript,angular,service,model,Javascript,Angular,Service,Model,我是安格拉尔的新手,所以我会尽量把这个问题弄清楚。我想在我的模型中有一个方法,我可以从我的服务中调用它。现在我用它来替换这个名字 这是我的模型 export class Secret { public name: string; constructor ( public id: number, public type: string, public visible_data: any, public secrets?: any,
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);
});
}
要使用angular2服务,您需要做两件事。首先,您需要在服务顶部的
@Injectable
注释中添加注释
如果您想将服务相互注入,您需要在NGM模块上提供如下服务:
@NgModule({
selector: 'my-app',
providers: [NameService]
}):
constructor(private secretService: SecretService) {}
如果您想将服务注入到另一个服务/组件中,只需利用typescript并使用构造函数注入,如下所示:
@NgModule({
selector: 'my-app',
providers: [NameService]
}):
constructor(private secretService: SecretService) {}
要使用angular2服务,您需要做两件事。首先,您需要在服务顶部的
@Injectable
注释中添加注释
如果您想将服务相互注入,您需要在NGM模块上提供如下服务:
@NgModule({
selector: 'my-app',
providers: [NameService]
}):
constructor(private secretService: SecretService) {}
如果您想将服务注入到另一个服务/组件中,只需利用typescript并使用构造函数注入,如下所示:
@NgModule({
selector: 'my-app',
providers: [NameService]
}):
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对象。“新建…”将创建一个真正的typescript类对象。而不是
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对象。“新建…”将创建一个真正的typescript类对象。您好,我很感激您的回答,但我没有尝试将服务注入到另一个服务中。很抱歉,在我完成键入之前,它已被切断。我希望在我的模型中有一个可以从我的服务调用的函数。这在angular2中是可能的吗?我在下面找到了类似的东西(plnkr),但我无法让它在我的应用程序中工作。您好,我很感谢您的回答,但我并没有尝试将一个服务注入另一个服务。对不起,在我完成键入之前,它就被切断了。我希望在我的模型中有一个可以从我的服务调用的函数。这在angular2中是可能的吗?我在下面找到了类似的东西(plnkr),但我无法让它在我的应用程序中工作。我不得不调整我的模型以获得我想要的对象形状,但你的解决方案奏效了!谢谢大家!<代码>tempArray.push(新密码(item.id,item.name,item.type,{“username”:item.data.username},{“password”:item.Secret_到_集[0]。data.password},item.Secret_到_集[0]。组) );代码>任何感兴趣的人的模型
通过{[propName:string]:any;}导出类数据通过{[propName:string]:any;}导出类秘密实现ISecret{constructor(public id:number,public name:string,public type:string,public visible_data:DataThrough,public secrets:SecretThrough,public group_id?:any,public group_name?:any){}
为了让其他发现这个问题的人明白,我没有在我的模型中调用方法,我调整了模型的形状,并使用了您的建议来推送新的秘密()而不是对象。我必须调整我的模型以获得我想要的对象形状,但您的解决方案奏效了!谢谢!tempArray.push(新密码(item.id,item.name,item.type,{“用户名”:item.data.username},{“密码”:item.Secret_到_集[0]。data.password},item.Secret_到_集[0]。组));
任何感兴趣的人的模型通过{[propName:string]:any导出类数据;}通过{[propName:string]:any;}导出类Secret实现ISecret{constructor(public id:number,public name:string,public type:string,public visible_data:DataThrough,public secrets:SecretThrough,public group_id?:any,public group_name?:any){}
为了让其他发现这个问题的人明白,我没有在我的模型中调用方法,我调整了模型的形状,并根据您的建议推送新的Secret(),而不是对象