我不知道如何从Observable中提取值以由Observable存在的函数返回.我只需要从中返回一个值,没有别的.
当前版本有效
function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
console.log(data)
}
)
}
getValueFromObservable()
Run Code Online (Sandbox Code Playgroud)
我需要这个工作,函数返回值,然后:
function getValueFromObservable() {
this.store.subscribe(
(data:any) => {
return data
}
)
}
console.log(getValueFromObservable())
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
当我这样做:
<div (click)="func1()" (dblclick)="func2()">Some text</h1>
Run Code Online (Sandbox Code Playgroud)
我实际上得到"func1()"甚至在dblclick上两次.
我怎样才能使它在同一个元素上工作并且工作得很好?
什么时候合适使用什么我有点困惑。
1.使用静态函数定义类,只需导入并使用导入的名称,然后使用函数
共享类:
export class SomeClass {
static someFunction(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
使用导出类的类:
import { SomeClass } from './someclassstatic'
...
constructor(){
SomeClass.someFunction()
}
Run Code Online (Sandbox Code Playgroud)
2.定义标准类,然后通过DI进行安装
共享类:
export class SomeClassDI {
public someFunctionDI(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
使用导出类的类:
import { SomeClassDI } from './someclassdi'
...
constructor(private theclassdi:SomeClassDI){
this.theclassdi.someFunction()
}
Run Code Online (Sandbox Code Playgroud)
3.定义标准类,然后在引导时挂载为提供程序
共享类:
export class SomeClassBS {
public someFunctionBS(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
引导Angular2的类
import { SomeClassBS } from './someclassbs'
...
bootstrap(AppComponent, [SomeClassBS]);
Run Code Online (Sandbox Code Playgroud)
使用导出类的类:
??? I am not sure what can be the example here.
Run Code Online (Sandbox Code Playgroud)
提供者的正确用法是什么?
我使用了Angular2动态组件加载器.一切都运作良好.
我动态加载的组件发出事件,但我无法在任何地方捕获它.
家长代码:
this.dcl.loadAsRoot(SomeComponent, "#dynamiccomponenthere", this.injector)
Run Code Online (Sandbox Code Playgroud)
父模板:
<div id="dynamiccomponenthere" (somecustomevent)="someFunc()"></div>
Run Code Online (Sandbox Code Playgroud)
儿童:
...
this.somecustomevent.emit(data)
...
Run Code Online (Sandbox Code Playgroud)
*解决方案:( thx Gunther)*
cmp.instance['somecustomevent'].subscribe(ev => {
this.consoleLog(ev) // run function in parent!
})
Run Code Online (Sandbox Code Playgroud) 有没有办法在没有"interval()"部分的情况下执行相同的功能?
我只想将数组连接到一个observable,然后只需更新数组,并观察observable以观察该数组并做出反应.
如果这是一个很好的解决方案,有没有办法实现,并且.distinctUntilChanged()在这里,如果数据是相同的,它不会发出新的值,那么这个"interval(10)"将不是瓶颈.
这是Plunker:http://plnkr.co/edit/xlWSTz8gNfByTnT1REw5?p = preview
import {Component} from 'angular2/core';
import * as Rx from 'rxjs/Rx'
@Component({
selector: 'a-webapp',
template:`
<div>
<h2>{{name}}</h2>
<button (click)="addToArray()">Add</button> <button (click)="resetArray()">Reset</button>
<ul>
<li *ngFor="let item of latest$ | async">{{ item | json }}</li>
</ul>
{{ data | json }}
</div>
`
})
export class AppComponent {
data = ["one", "two", "three"]
data$: Rx.Observable<Array<string>>;
latest$: Rx.Observable<Array<string>>;
constructor() {}
ngOnInit() {
this.data$ = Rx.Observable.interval(10).concatMap(y => {
return Rx.Observable.of(this.data)
})
this.latest$ = Rx.Observable.combineLatest(this.data$, (data) => { …Run Code Online (Sandbox Code Playgroud)