无法从另一个函数返回函数中的字符串

时间:2016-08-10 21:44:18

标签: javascript angular typescript typescript1.8 typescript1.5

我有3个触发POST api调用的函数,我想向任何调用它的人发送succsess / failure消息(Observable<string>)。

所以消息是相似的,我不想重复自己,然后我添加了一个新功能来获取成功消息。但是从某种原因看它起作用了,我在运行应用程序时看到了一个空白页面,但是如果不是调用getSuccessMessage我只是传递一个常规字符串(&#34; Something&#34;)它可以...

很奇怪,那些是​​我的功能:

export enum ListType {Cars, Animals, Books}

 public updateOne(carList: Car[]): Observable<string> {
    return this._myApiSevice.postCarsNewOrder(carList)
      .map(response => this.getSuccessMessage(ListType.Cars)) //update succeeded  
      .catch(error => Observable.of("FAILURE: post to Cars did not succeed!")); 
  }

  public updateTwo(animalList: Animal[]): Observable<string> {
    return this._myApiSevice.postAnimalsNewOrder(animalList)
      .map(response => this.getSuccessMessage(ListType.Animals))
      .catch(error => Observable.of("FAILURE: post to Animals did not succeed!"));
  }

  public updateThree(bookList: Book[]): Observable<string> {
    return this._myApiSevice.postBooksNewOrder(bookList)
      .map(response => this.getSuccessMessage(ListType.Books)) //update succeeded
      .catch(error => Observable.of("FAILURE: post to Books did not succeed!"));
  }

  public getSuccessMessage(listType: ListType): string {
    return "SUCCESS: post to " + ListType[listType] + "succeed!";
  }
你看错了吗?

这是控制台中的错误:

  

EXCEPTION:错误:未捕获(在承诺中):无法解析所有参数   for&#39; MyCmp&#39;(undefined,ElementRef,MdDialog)。确保这一点   所有参数都用Inject修饰或具有有效类型   注释和那个&#39; MyCmp&#39;用Injectable装饰。

枚举在另一个类中被解除,这会导入枚举来自的类。

如果你有一个建议告诉我如何将失败信息收集到一个带有成功消息的功能中它会很可爱,谢谢@!

1 个答案:

答案 0 :(得分:0)

要从typescript中的枚举类型获取字符串的值,您需要执行以下操作

enum ListType {
  Cars, 
  Animals, 
  Books
}
var booksStr = ListType[ListType.Books];

以下是https://basarat.gitbooks.io/typescript/content/docs/enums.html

的理由

所以你的功能就像

public getSuccessMessage(listType: ListType): string {
    return "SUCCESS: post to " + ListType[ListType.listType] + "succeed!";
}