2017-08-14 17 views
1

私はAngularを学んできましたが、これまで基本的な基礎は分かっています。私はRxJSとObservablesについて深く掘り下げたいと思いますが、オンラインでチュートリアルに従おうとするたびに、これらの些細なエラーが常にあります。私はそれらを解決できないほど馬鹿だと感じ、これらのチュートリアルの最初のステップで立ち往生します。例えば、私は、観測にRangle.ioのチュートリアルを以下だけど、.next(42).next(43)、そして.push(value)返すエラーがArgument of type '42' is not assignable to paramter of type 'number[]'を言って。基本的なObservableを動かすことができません

チュートリアルやRxJS公式GitHubでは、import Rx from 'rxjs/Rx'またはimport * Rx from 'rxjs'Rxを使用していますが、私のプロジェクトでは機能しません。すべてをインポートする代わりにimport { Observable } from 'rxjs/Observable'を使用する必要がある理由を理解できません。

とにかく、私はそれがオペレータにエラーを引き起こしている何をしないのですか?

import { Component } from '@angular/core'; 

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/observable/from'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
    title = 'app'; 

    private data: Observable<Array<number>>; 
    private values: Array<number> = []; 
    private anyErrors: boolean; 
    private finished: boolean; 

    constructor() {} 

    init() { 
    this.data = new Observable(observer => { 
     setTimeout(() => { 
     observer.next(42); 
     }, 1000); 

     setTimeout(() => { 
     observer.next(43); 
     }, 1000); 

     setTimeout(() => { 
     observer.complete(); 
     }, 3000); 
    }); 

    const subscription = this.data.subscribe(
     value => this.values.push(value), 
     error => this.anyErrors = true, 
    () => this.finished = true 
    ); 
    } 
} 

答えて

4

ObservableがタイプArray<number>の要素を生成すると宣言していますが、numberという値を生成するように設定しているために表示されるエラーです。

あなたは

private data: Observable<Array<number>>;

あなたの問題を解決する必要があり

private data: Observable<number>;

に変更した場合。

観測は、それらが例えば放射すること、各オブジェクトのタイプに設定されるべきであることに注意してくださいむしろ<Array<number>> *

などの排出量のリストまたはコレクションより<number>、*コースの場合を除き、あなたに観察が実際にするたびにオブジェクトのコレクションを放出しない...

+1

これも私が見るものです。このチュートリアルでは、ng 2.0.0とrxjs 5.0.0ベータを使って作業しています。これを許すには何かがあったに違いない。 –

+0

私はそれを指摘していただきありがとうございます。角度学ぶことは、あなたがそれをチェックアウトしたい場合、私はちょうど4.3アンギュラ先週にこれを更新 – midnightnoir

+0

...チュートリアルの豊富なオンラインありますにもかかわらず、私は思った以上にイライラすることが証明されています。https://app.pluralsightを。 com/library/courses/angular-2-getting-started-update /目次(無料の週にサインアップできます) – DeborahK

0

作業Plunkerがここにあります:http://plnkr.co/edit/SA25mG?p=preview

それは2つのだけの輸入があります

import {Component} from '@angular/core'; 
import {Observable} from 'rxjs/Observable'; 

をあなたがHTMLを表示しないので、私はあなたがこのplunkerに似た何かを持っていると仮定?

+0

いや、私はRangleのplnkrに私のコードを貼り付け、それ働くしかし、Rangleの例からコード全体をコピーしても、なぜ私のプロジェクトがエラーを表示しているのか分かりません。私は最後のインポートを外すのを忘れていました。私は別のチュートリアルを作成しようとしていて、それを取り出して忘れていました。 – midnightnoir

関連する問題