我Observable.of
在项目中导入函数时遇到问题.我的Intellij看到了一切.在我的代码中,我有:
import {Observable} from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)
在我的代码中我使用它:
return Observable.of(res);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在使用Angular 2.
当我使用这两个中的任何一个时,我的程序运行良好:
import { BehaviorSubject } from 'rxjs/Rx';
import { BehaviorSubject } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)
但是,我尝试使用以下方法:
import { BehaviorSubject } from 'rxjs/subject/BehaviorSubject';
Run Code Online (Sandbox Code Playgroud)
但我失败了,我的浏览器控制台显示:
未捕获错误:找不到模块'rxjs/subject/BehaviorSubject'
我怎样才能正确使用第三种方式?谢谢
我试图从服务订阅一个observable,它构建没有错误,但我在浏览器中查看时得到错误"this.service.getBanners(...).subscribe不是一个函数".
服务:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable()
export class BannerService {
banners: any = ['1','2','3'];
constructor(
) {}
getBanners(): Observable<any[]> {
return this.banners;
}
setBanners(banners: any[]): void {
this.banners = banners;
}
}
Run Code Online (Sandbox Code Playgroud)
零件:
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { BannerService } from './../banner/banner.service';
@Component({
selector: '.banner',
templateUrl: './banner.component.html',
styleUrls: ['./banner.component.sass'],
encapsulation: ViewEncapsulation.None
})
export class BannerComponent implements OnInit {
banners: any[]; …
Run Code Online (Sandbox Code Playgroud) 我想通过以下方式在typescript中创建一个延迟的observable:
import 'rxjs/add/observable/of';
...
const o = Observable.of(values).delay(10000);
o.subscribe((v) => { alert(v); });
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
"Observable_1.Observable.of(...).delay is not a function"
Run Code Online (Sandbox Code Playgroud) 我正在为angular2组件编写测试用例.
我创建了一个使用observable流的服务,如下所示:
import {Injectable} from '@angular/core'
import {Subject} from 'rxjs/Subject';
import {User} from './user.model';
@Injectable()
export class UserService {
selectedUserInstance:User = new User();
// Observable selectedUser source
private selectedUserSource = new Subject<User>();
// Observable selectColumn stream
selectedUser$ = this.selectedUserSource.asObservable();
// service command
selectUser(user:User) {
this.selectedUserInstance=user;
this.selectedUserSource.next(user);
}
}
Run Code Online (Sandbox Code Playgroud)
现在在我的组件中,我订阅了这个流:
getSelectedUser() {
this.subscriptionUser = this.userService.selectedUser$.subscribe(
selectedUser => {
this.selectedUser = selectedUser;
}
);
}
Run Code Online (Sandbox Code Playgroud)
现在在我的spec.ts文件中,我想将此流模拟为:
spyOn(userService, 'selectedUser$')
.and.returnValue(Observable.of({
'name': 'bhushan',
'desc': 'student'
}));
Run Code Online (Sandbox Code Playgroud)
但它一直给我以下错误:
错误:spyOn找不到要监视selectColumn $()的对象
有没有办法做到这一点?
我很长时间以来一直坚持这个问题.
任何输入?
谢谢
我有一个方法:
getFilters(): Observable<Filters[]> {
let filters: Observable<Filters[]> = [
{
property: "Value",
property2: "Value2"
},
{
property: "Value3",
property2: "Value4"
}
return filters;
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
类型'{Property:string,Property2:string}不能分配给Observable类型.