har*_*pdx 34 angular2-routing angular
我正在将我的Angular2应用程序从2.0.0升级到2.3.0,我遇到了以下错误.任何想法为什么?我看到了另一篇文章(Angular 2.0.1 Router EmptyError:序列中没有元素),但在尝试之后,问题仍然存在.是什么导致这个错误?
Error: Uncaught (in promise): EmptyError: no elements in sequence
Error: no elements in sequence
at EmptyError.ZoneAwareError (zone.js:672)
at new EmptyError (EmptyError.ts:13)
at FirstSubscriber._complete (first.ts:161)
at FirstSubscriber.Subscriber.complete (Subscriber.ts:122)
at Subject._subscribe (Subject.ts:109)
at Subject.Observable.subscribe (Observable.ts:98)
at Observable._subscribe (Observable.ts:158)
at Observable.subscribe (Observable.ts:98)
at Observable._subscribe (Observable.ts:158)
at FirstOperator.call (first.ts:82)
at Observable.subscribe (Observable.ts:96)
at Object.subscribeToResult (subscribeToResult.ts:32)
at MergeAllSubscriber._next (mergeAll.ts:82)
at MergeAllSubscriber.Subscriber.next (Subscriber.ts:95)
at MapSubscriber._next (map.ts:80)
at resolvePromise (zone.js:475) [angular]
at resolvePromise (zone.js:460) [angular]
at /libs/zone.js/dist/zone.js:509:17 [angular]
at Object.onInvokeTask (core.umd.min.js:32) [angular]
at ZoneDelegate.invokeTask (zone.js:261) [angular]
at Zone.runTask (zone.js:151) [<root> => angular]
at drainMicroTaskQueue (zone.js:405) [<root>]
at ZoneTask.invoke (zone.js:336) [<root>]ErrorHandler.handleError @ core.umd.min.js:31next @ core.umd.min.js:32generatorOrNext.object.schedulerFn @ core.umd.min.js:32SafeSubscriber.__tryOrUnsub @ Subscriber.ts:238SafeSubscriber.next @ Subscriber.ts:190Subscriber._next @ Subscriber.ts:135Subscriber.next @ Subscriber.ts:95Subject.next @ Subject.ts:61EventEmitter.emit @ core.umd.min.js:32NgZone.triggerError @ core.umd.min.js:32onHandleError @ core.umd.min.js:32ZoneDelegate.handleError @ zone.js:233Zone.runGuarded @ zone.js:129_loop_1 @ zone.js:416drainMicroTaskQueue @ zone.js:425ZoneTask.invoke @ zone.js:336
Run Code Online (Sandbox Code Playgroud)
我还注意到当我尝试更改为使用Guards的路由时会抛出NavigationError对象.但只有上面的错误是控制台中显示的内容.
NavigationError {id: 2, url: "/home", error: EmptyError}
我有点不知所措,并希望得到任何帮助.
gol*_*das 76
使用RxJS 5.5.3 with angular(版本4/5)时会发生此错误,因此只需跳过RxJS 5.5.3,并通过添加"rxjs": "^5.5.4"到项目package.json中使用RxJS 5.5.4 .
在RxJS 5.5.4出来之前回答:(老,不要这样做)
Luc*_*tto 31
在我来说,当我用我有这些错误first()在Observable在一位takeUntil()前发出first().
例:
let test$ = new ReplaySubject(1);
let testAux$ = new ReplaySubject(1);
let test2$ = test$.asObservable().takeUntil(testAux$.asObservable());
test2$.first().subscribe(() => console.log('first!'));
testAux$.next(null);
Run Code Online (Sandbox Code Playgroud)
这是很难发现的问题,因为我返回一个observable与takeUntil()该叫过去曾通过不同的类(在不同的文件)服务first(),和页面导航过程中接收到错误(因为takeUntil()收到observable该发射时在上一个页面这个问题出现在导航本身.
最奇怪的是,在next()调用时发生错误,而不是在第二个参数中subscribe(),导致导航过程本身失败.我不知道rxjs团队是否选择了这个功能来表现这种方式,因为它使得隔离问题变得更加困难.
根据这个评论:
首先将只发出一个项目或抛出错误[...]如果您想从observable中获取最多一个项目,请使用
.take(1).
Vic*_*r96 17
您需要更改为:
canActivate(route: ActivatedRouteSnapshot): Observable<boolean>{
return new Observable<boolean>(resolve => {
resolve.next(true);
resolve.complete();
});
}
Run Code Online (Sandbox Code Playgroud)
================
我不确定为什么但是对我来说这个错误是由使用observables的CanActivate路由器防护引起的.然而,转向承诺解决了这个问题.
我离开了这个:
canActivate(route: ActivatedRouteSnapshot): Observable<boolean>{
return new Observable<boolean>(resolve => {
resolve.complete(true);
//or
resolve.complete(false);
});
}
Run Code Online (Sandbox Code Playgroud)
对此:
canActivate(route: ActivatedRouteSnapshot){
return true;
//or
return false;
});
}
Run Code Online (Sandbox Code Playgroud)
将此属性添加到您的路线.
pathMatch: 'full
Run Code Online (Sandbox Code Playgroud)
例如.
{ pathMatch: 'full', path: "", component: HomeComponent }
Run Code Online (Sandbox Code Playgroud)
它对我有用.
有同样的问题,因为我在 this.http.get(); 之后做了一个 .first(); Http.get 返回一个冷的 observable,所以 first 不需要,因为冷的 observables 自己取消订阅。
this.http.get().pipe(first()); -> EmptyError:序列中没有元素
对于因为错误消息而来到这里的任何人,这发生在我们身上是因为我们返回了一个无效的 Observable。您至少需要返回一些值,例如“true”。
return of(true);
Run Code Online (Sandbox Code Playgroud)
我还将分享我在RxJS 6.5.3中使用last()操作符时出现此错误的经验。该问题可以通过应用默认值来解决,例如:
.pipe(
last(null, []) // predicate = null, defaultValue = []
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25713 次 |
| 最近记录: |