簡體   English   中英

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代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM