Typescript 当使用承诺时,角度2进入循环

Typescript 当使用承诺时,角度2进入循环,typescript,angular,angular-directive,Typescript,Angular,Angular Directive,好的,我需要再一次的帮助来解决Angular2/Typescript面临的问题 以下是我的简化代码: /// <reference path="../node_modules/angular2/typings/browser.d.ts" /> import {Component} from 'angular2/core'; import {bootstrap} from 'angular2/platform/browser'; @Component({ selector:

好的,我需要再一次的帮助来解决Angular2/Typescript面临的问题

以下是我的简化代码:

/// <reference path="../node_modules/angular2/typings/browser.d.ts" />

import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';

@Component({
    selector: 'hello-app',
    template: `
        <h1>Foo:{{getFoo("FooBar") | async}}</h1>
    `
})
export class HelloApp {

  getFoo(parameter): Promise<string> {
    return new Promise((resolve) => resolve(parameter));
  }

}

bootstrap(HelloApp);
//
从'angular2/core'导入{Component};
从'angular2/platform/browser'导入{bootstrap};
@组成部分({
选择器:“你好应用程序”,
模板:`
Foo:{{getFoo(“FooBar”)| async}
`
})
出口类HelloApp{
getFoo(参数):Promise{
返回新承诺((resolve)=>resolve(参数));
}
}
bootstrap(HelloApp);
当你试着运行它时,它会循环运行,冻结我的浏览器标签直到我杀死它

下面的代码工作正常,但不会执行我想要的操作,因为我需要传递一个参数

/// <reference path="../node_modules/angular2/typings/browser.d.ts" />

import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';

@Component({
    selector: 'hello-app',
    template: `
        <h1>Foo:{{foo | async}}</h1>
    `
})
export class HelloApp {

  foo: Promise<string> = new Promise((resolve) => resolve("foobar"));

}

bootstrap(HelloApp);
//
从'angular2/core'导入{Component};
从'angular2/platform/browser'导入{bootstrap};
@组成部分({
选择器:“你好应用程序”,
模板:`
Foo:{{Foo | async}}
`
})
出口类HelloApp{
foo:Promise=newpromise((resolve)=>resolve(“foobar”);
}
bootstrap(HelloApp);

有线索吗?提前谢谢

这是由Angulars更改检测引起的,它在每个更改检测周期调用
getFoo(“FooBar”)


相反,您应该做的是将
Promise
分配给一个字段并绑定到该字段,如您的工作示例所示。

问题是,当使用对
getFoo
的调用进行绑定时,您会多次创建一个Promise,并使用
async
管道对其进行注册。您应该将承诺设置为一个字段以避免这种行为,并且只调用一次
getFoo
方法来初始化承诺。

感谢您的anerr,但由于我需要向该方法添加一个参数,我不知道如何使用一个字段来实现这一点,从您的问题中的代码很难区分。我需要更多的背景。根据您问题中的示例,我假设调用
this.foo=getFoo(“FooBar”)应该可以,但我想还有更多。我的模板正在列表上循环。但随后我通过在构造函数中的同一个列表上循环来启动我的值。至少它起作用了,谢谢!你能用一些额外的代码来更新你的问题,显示你试图完成什么吗?