即使没有导航到Angular 2,Angular 2也会保持路由活动

时间:2016-03-15 00:17:36

标签: javascript angular

在角度2中,有一种方法可以使导航路线保持活动状态,即使它没有导航到?我的目的是试图将webgl画布放入角度2路线。现在默认情况下,只要路由导航到它,就会初始化组件并加载所有需要的资源,然后在导航时它会破坏组件并从Dom中删除视图。当使用webgl时,这会导致2个问题,主要的一个是只允许特定数量的webgl实例,否则会导致显卡过载。因此,如果路由被多次导航和远离,那么有可能达到限制,因为它每次导航到路径时都会创建一个新的webgl实例。此外,webgl通常需要复杂的变量和资源,能够保持这些变量的存活并因此不必再次加载,在某些情况下甚至可以在路径之外使用它们,这将是很好的。

所以我提出的解决方案是让组件保持活动但隐藏,以便资源和变量保持活动有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

我认为您可以尝试使用routerCanReuse界面及其@Component({ selector: 'my-cmp', template: ` (...) ` }) class MyCmp implements CanReuse, OnReuse { routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) { return true; } } 。如果组件实现此方法并返回true,则组件不会被销毁,并且相同的组件实例将跨路径重用:

(defn- update-fields
  [cell-states]
  (doseq [[idx state] (map-indexed vector cell-states)
        :let [field (select-field idx)]]
    (config! field :icon (icons/cell-icons state))))

(defn- update-board
  [snapshot face]
  (do
    (change-smiley face)
    (update-fields (:cells snapshot))
    (repaint! ui)))