【问题标题】:Fail to return a string from in a function from another function无法从另一个函数的函数中返回字符串
【发布时间】:2016-12-17 11:12:45
【问题描述】:

我有这 3 个触发 POST api 调用的函数,我想将成功/失败消息返回给调用它的人 (Observable<string>)。

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

奇怪,这些是我的功能:

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!";
  }

你看出什么不对了吗?

这是控制台中的错误:

异常:错误:未捕获(承诺中):无法解析所有参数 对于'MyCmp'(未定义,ElementRef,MdDialog)。确保 所有参数都用 Inject 修饰或具有有效类型 注释,并且 'MyCmp' 用 Injectable 装饰。

枚举在另一个类中被声明,这将导入枚举来自的类。

如果你对我有一个建议,如何将失败消息也收集到一个带有成功消息的函数中,这将是可爱的,谢谢@!

【问题讨论】:

  • 您有checked your console 的错误吗?
  • @MikeC 刚刚将错误添加到问题中,抱歉我之前做过。

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


【解决方案1】:

要从 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!";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2011-09-04
    相关资源
    最近更新 更多