小编Ted*_*ddy的帖子

如何从里面有Observable订阅的函数返回值?

我不知道如何从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)

我在这做错了什么?

rxjs typescript rxjs5 angular

71
推荐指数
4
解决办法
12万
查看次数

Angular 2(单击)和(dblclick)对同一元素不起作用?

当我这样做:

<div (click)="func1()" (dblclick)="func2()">Some text</h1>
Run Code Online (Sandbox Code Playgroud)

我实际上得到"func1()"甚至在dblclick上两次.

我怎样才能使它在同一个元素上工作并且工作得很好?

javascript angular

26
推荐指数
1
解决办法
6万
查看次数

Angular 2何时使用DI,提供程序或纯导入?

什么时候合适使用什么我有点困惑。

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)

提供者的正确用法是什么?

import dependency-injection typescript angular

6
推荐指数
1
解决办法
1458
查看次数

Angular 2动态加载组件,事件没有回击?

我使用了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)

typescript angular

5
推荐指数
1
解决办法
1308
查看次数

在Angular2 Typescript中没有.interval()的情况下将Array连接到Observable

有没有办法在没有"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)

rxjs typescript rxjs5 angular

0
推荐指数
1
解决办法
4954
查看次数