我在项目中导入Observable.of
函数时遇到问题。我的Intellij看到了一切。在我的代码中,我有:
import {Observable} from 'rxjs/Observable';
在我的代码中我使用它:
return Observable.of(res);
有什么想法吗?
答案 0 :(得分:218)
其实我的进口搞砸了。在最新版本的RxJS中,我们可以像这样导入它:
import 'rxjs/add/observable/of';
答案 1 :(得分:119)
如果有人在使用Angular 6 / rxjs 6时遇到此问题,请在此处查看答案: Could not use Observable.of in RxJs 6 and Angular 6
简而言之,您需要像这样导入它:
import { of } from 'rxjs';
然后不用打电话
Observable.of(res);
只需使用
of(res);
答案 2 :(得分:41)
虽然这听起来很奇怪,但对我来说,重要的是在import {Observable} from 'rxjs/Observable
的导入路径中大写'O'。如果我从observable_1.Observable.of is not a function
导入Observable,则rxjs/observable
的错误消息将保持不变。奇怪,但我希望它能帮助别人。
答案 3 :(得分:29)
我的愚蠢错误是当我要求观察时我忘记添加Array
(
[tails] => 49960
[heads] => 50040
)
。
<强>当时:强>
/add
在视觉上看起来很好,因为import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
文件实际上存在。
应该是:
rxjs/observable/of
答案 4 :(得分:18)
添加,
如果您使用其中许多,则可以使用
导入所有内容import 'rxjs/Rx';
正如@Thierry Templier所提到的那样。但我认为如果您使用的是有限运算符,那么您应该导入单个运算符,如
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
如@uksz所述。
因为'rxjs / Rx'将导入绝对性价比的所有Rx组件。
答案 5 :(得分:18)
无论出于何种原因,补丁对我不起作用,所以我不得不采用这种方法:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
答案 6 :(得分:16)
您也可以通过这种方式导入所有运营商:
import {Observable} from 'rxjs/Rx';
答案 7 :(得分:13)
如果您使用的是Angular 6/7
import { of } from 'rxjs';
然后不用打电话
Observable.of(res);
只需使用
of(res);
答案 8 :(得分:4)
这应该可以正常使用。
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
答案 9 :(得分:4)
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';
....
return of(res)
答案 10 :(得分:4)
从Angular 5 / Rxjs 5升级到Angular 6 / Rxjs 6?
您必须更改导入和实例化。 Check out Damien's blog post
<强>铊; DR:强>
import { Observable, fromEvent, of } from 'rxjs';
const yourResult = Observable
.create(of(yourObservable))
.startWith(null)
.map(x => x.someStringProperty.toLowerCase());
//subscribe to keyup event on input element
Observable
.create(fromEvent(yourInputElement, 'keyup'))
.debounceTime(5000)
.distinctUntilChanged()
.subscribe((event) => {
yourEventHandler(event);
});
答案 11 :(得分:4)
我使用的是Angular 5.2和RxJS 5.5.6
此代码不工作:
import { Observable,of } from 'rxjs/Observable';
getHeroes(): Observable<Hero[]> {
return of(Hero[]) HEROES;
}
以下代码有效:
import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';
getHeroes(): Observable<Hero[]>
{
return Observable.create((observer: Subscriber<any>) => {
observer.next(HEROES);
observer.complete();
});
}
通话方式:
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
我认为他们可能会在RxJS 5.5.2
中移动/更改()功能答案 12 :(得分:2)
RxJS 6
升级到RxJS
库的第6版而不使用rxjs-compat
包时,请使用以下代码
import 'rxjs/add/observable/of';
// ...
return Observable.of(res);
必须改为
import { of } from 'rxjs';
// ...
return of(res);
答案 13 :(得分:2)
对于Angular 5+:
add_action ('add_meta_boxes','add_info_meta_box');
function add_info_meta_box()
{
add_meta_box('new_meta', 'info','info_meta_fields_output','product', 'side');
}
function info_meta_fields_output($post)
{
$new_meta = get_post_meta($post->ID,'_new_meta',true);
echo ('<label for="new_meta"> Custom Text </label>');
echo ('<input type="text" id="new_meta" name="new_meta" value="'.esc_attr($new_meta).'"/>');
}
add_action('save_post','save_info_meta_box');
function save_info_meta_box($post_id)
{
$new_meta=sanitize_text_field($_POST['new_meta']);
update_post_meta ($post_id,'_new_meta',$new_meta);
}
// Displaying the value on single product pages
function meta_product($product_id) {
$new_meta2 = get_post_meta(get_the_ID(),'_new_meta', true);
echo ('<p id="value-on-single-product">' . $new_meta2 . '</p>');
}
add_action('woocommerce_single_product_summary', 'meta_product',30);
应该有效。如果您使用
import { Observable } from 'rxjs/Observable';
匹配
import { Observer } from 'rxjs/Observer';
做了很多重要的事情,所以最好避免它。
答案 14 :(得分:2)
对于我(Angular 5和RxJS 5)而言,自动完成导入建议:
import { Observable } from '../../../../../node_modules/rxjs/Observable';
while to应该是(所有静态运算符from
,of
等都可以正常工作:
import { Observable } from 'rxjs/Observable';
答案 15 :(得分:2)
我今天遇到了这个问题。我正在使用systemjs来加载依赖项。
我正在加载像这样的Rxjs:
...
paths: {
"rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
},
...
而不是使用路径使用此:
var map = {
...
'rxjs': 'node_modules/rxjs',
...
}
var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}
systemjs加载库的方式的这个小变化解决了我的问题。
答案 16 :(得分:1)
import 'rxjs/add/observable/of';
显示了rxjs-compat
的要求require("rxjs-compat/add/observable/of");
我没有安装这个。由
安装npm install rxjs-compat --save-dev
并重新运行解决了我的问题。
答案 17 :(得分:1)
在public class user
{
[DefaultValue("")]
public string Name { get; set; }
//[DefaultValue( )]
public DateTime PasswordLastSet { get; set; }
}
v6中,应将rxjs
运算符导入为of
答案 18 :(得分:0)
不知怎的,即使是Webstorm就像这样import {of} from 'rxjs/observable/of';
一切都开始起作用了