Skip to content
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
@chirayuk

Description

@chirayuk

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)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions