Angular2服务调用模型方法
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
code:
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;
});
}
}
代替
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服务,你需要做两件事。首先,您需要在服务的顶部添加@Injectable
注释。
如果你想要相互注入服务,你需要在你的NgModule中像这样提供它们:
@NgModule({
selector: 'my-app',
providers: [NameService]
}):
如果你想把这个服务注入到另一个服务/组件中,你可以利用typescript,像这样使用构造函数注入:
constructor(private secretService: SecretService) {}
相关文章:
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- sails.js beforeCreate方法只接收required设置为true的模型属性
- 在extJS 4.2中,有没有一种方法可以将模型值动态绑定到表单
- 有没有一种方法可以在设计模式下将ng模型或工厂绑定到iframe
- Odoo销售点如何访问模型并使用JS调用方法
- 有没有一种方法可以使用angular中的$index作为ng重复中的模型
- Ember.js-模型find()方法中的异步调用
- 续集返回未定义的模型自定义方法
- 当一个模型在骨干关系中被销毁时,销毁相关模型的最佳方法是什么?
- Django 使用 JSON 获取模型方法的值
- 如何将经度/经度值绑定到挖空视图模型方法
- 一种对MVC中的模型进行封装(添加隐私)的方法
- 将ng模型转发到指令中的元素的正确方法是什么
- 主干模型方法未递增
- 如何使用setVisible()方法设置json模型中元素的可见属性
- Backbone Collection.每个方法都会影响每隔一个模型
- 在canjs中,根据任何模型实例的存在,有条件地显示胡子模板部分的最常用方法是什么
- 如何等到find方法完成后再在Ember模型中进行进一步处理
- 有没有任何方法可以检测到用户'的Mac硬件模型
- 对于EmberJs模型,为什么不建议重写“init”方法