This repository was archived by the owner on Feb 22, 2018. It is now read-only.
This repository was archived by the owner on Feb 22, 2018. It is now read-only.
Leaving a nested ng-view fails with a stack trace #1182
Closed
Description
Repro case: https://github.com/chirayuk/sample/tree/issue_1182_leaving_a_nested_ng_view
The issue is that the child ng-view attempts its cleanup after the
parent ng-view has already cleaned up. The childScope in the child
ng-view is not attached (after the parent cleanup) and fails the
assertion.
Here's the cleanup code in ng-view:
_leaveSubscription = route.onLeave.listen((_) {
_leaveSubscription.cancel();
// …
_cleanUp();
});
where _cleanUp()
calls _childScope.destroy()
;
Here's the stack trace:
'package:angular/core/scope.dart': Failed assertion: line 335 pos 12: 'isAttached' is not true.
STACKTRACE:
#0 Scope.destroy (package:angular/core/scope.dart:335:12)
#1 NgView._cleanUp (package:angular/routing/ng_view.dart:130:24)
#2 NgView._show.<anonymous closure> (package:angular/routing/ng_view.dart:106:15)
#3 _rootRunUnary (dart:async/zone.dart:730)
#4 _ZoneDelegate.runUnary (dart:async/zone.dart:462)
#5 _onRunUnary.<anonymous closure> (package:angular/core/zone.dart:113:63)
#6 VmTurnZone._onRunBase (package:angular/core/zone.dart:97:16)
#7 _onRunUnary (package:angular/core/zone.dart:113:17)
#8 _ZoneDelegate.runUnary (dart:async/zone.dart:462)
#9 _CustomizedZone.runUnary (dart:async/zone.dart:667)
#10 _BaseZone.runUnaryGuarded (dart:async/zone.dart:582)
#11 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:333)
#12 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:263)
#13 _SyncBroadcastStreamController._sendData.<anonymous closure> (dart:async/broadcast_stream_controller.dart:344)
#14 _BroadcastStreamController._forEachListener (dart:async/broadcast_stream_controller.dart:297)
#15 _SyncBroadcastStreamController._sendData (dart:async/broadcast_stream_controller.dart:343)
#16 _BroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:227)
#17 Router._leaveCurrentRouteHelper (package:route_hierarchical/client.dart:654:48)
#18 Router._leaveCurrentRouteHelper (package:route_hierarchical/client.dart:656:47)
#19 Router._leaveCurrentRoute (package:route_hierarchical/client.dart:645:41)
#20 Router._leaveOldRoutes (package:route_hierarchical/client.dart:525:30)
#21 Router._processNewRoute (package:route_hierarchical/client.dart:497:27)
#22 Router._route.<anonymous closure> (package:route_hierarchical/client.dart:481:29)
#23 _rootRunUnary (dart:async/zone.dart:730)
#24 _ZoneDelegate.runUnary (dart:async/zone.dart:462)
#25 _onRunUnary.<anonymous closure> (package:angular/core/zone.dart:113:63)
#26 VmTurnZone._onRunBase (package:angular/core/zone.dart:97:16)
#27 _onRunUnary (package:angular/core/zone.dart:113:17)
#28 _ZoneDelegate.runUnary (dart:async/zone.dart:462)
#29 _CustomizedZone.runUnary (dart:async/zone.dart:667)
#30 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:488)
#31 _Future._propagateToListeners (dart:async/future_impl.dart:571)
#32 _Future._completeWithValue (dart:async/future_impl.dart:331)
#33 _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:393)
#34 _rootRun (dart:async/zone.dart:723)
#35 _ZoneDelegate.run (dart:async/zone.dart:453)
#36 _onScheduleMicrotask.<anonymous closure> (package:angular/core/zone.dart:117:43)
#37 VmTurnZone._finishTurn (package:angular/core/zone.dart:143:34)
#38 VmTurnZone._onRunBase (package:angular/core/zone.dart:104:43)
#39 _onRunUnary (package:angular/core/zone.dart:113:17)
#40 _ZoneDelegate.runUnary (dart:async/zone.dart:462)
#41 _CustomizedZone.runUnary (dart:async/zone.dart:667)
#42 _BaseZone.runUnaryGuarded (dart:async/zone.dart:582)
#43 _BaseZone.bindUnaryCallback.<anonymous closure> (dart:async/zone.dart:608)