使用Angular2(rc1),是否有人知道如何将默认的更改检测策略设置为OnPush?它可以以某种方式全局设置吗?
我想避免将此行添加到每个组件
@Component({
...
changeDetection: ChangeDetectionStrategy.OnPush,
...
})
Run Code Online (Sandbox Code Playgroud) 我有一些预先定义的事件设置为在特定时间发生.我有一个计时器,像这样:
const timer = Rx.Observable.interval(100).timeInterval()
.map(x => x.interval)
.scan((ms, total) => total + ms, 0)
Run Code Online (Sandbox Code Playgroud)
计时器发出接近100,200,300,400,500的东西(虽然实际上它更像是101,200,302,401,500 ......这完全没问题)我也有一些我想在某些时候做的事情.例如,假设我想在以下时间做某些事情:
const stuff = Rx.Observable.from([1000, 2000, 2250, 3000, 5000]);
Run Code Online (Sandbox Code Playgroud)
我想要的是将"stuff"和"timer"组合在一起,使得结果流每次在"stuff"中定义一次值(或者稍晚一点).在这种情况下,这将是t = 1000毫秒,2000毫秒,2250毫秒,3000毫秒和5000毫秒.注意:由于间隔大小,2250人应该在2300左右发射.没关系.他们不能早到或不止一次.
我有一个解决方案,但它不是很好.它重新启动"东西"每一步(在这种情况下每100毫秒)并过滤它并采取1.我希望,一旦从"东西"发出一个事件,它就会消失,所以后续过滤器它没有那些价值观.
在真正的应用程序中,会有东西和东西2,也许东西3 ...(但我会称之为别的东西!)
提前致谢!我希望这很清楚.
Angular2 2.0.0-beta.15,Rxjs 5.0.0-beta.2
我有两个简单的rxjs observable,一个是共享的,一个不是(.share()调用它)
我有一个angular2组件,它订阅两个observable并在其模板中显示值,该模板也使用异步管道订阅了observable.
我单击一个按钮,在两个带有一些垃圾的observable上设置.next().
模板更新并显示每个模板的最新值.组件中的订阅功能不会为非共享的observable触发.为什么?
plunkr:https://plnkr.co/edit/IIWvnTT1zLit1eUNknkk ? p = preview
@Component({
selector: 'my-app',
template: `
<div>
<div>obs1 value: {{ observable1 | async }}</div>
<div>obs2 value: {{ observable2 | async }}</div>
<button (click)="randomizeIt()">randomize it</button>
<br>
<h3>Question 1</h3>
Why is obs1's initial value (from startWith) not displayed?
<h3>Question 2</h3>
Why does our subscription to obs2 never fire on new values?<br>
check console.log to see what i mean.
</div>`,
})
export class App {
public observable1:Observable<string>;
public observer1:any; …Run Code Online (Sandbox Code Playgroud)