我目前正在使用Typescript开展Angular 2项目。
我有几个共享相同行为的组件:它们都能够显示加载器(取决于它们是否正在获取某些数据),错误屏幕(如果获取失败),并且它们都订阅了相同的行为service(获取数据的那个)。此服务每30秒刷新一次数据,组件订阅者与新数据几乎相同。
我找不到分享这种行为的好方法。
我尝试使用typescript中的mixins,但首先,我不能覆盖我在我的组件中的mixin中声明的方法,其次,我仍然必须在我的组件中声明方法,里面没有任何东西,所以我的编译器不会抱怨。
我也尝试使用装饰器,但我的编译器抱怨,因为它找不到装饰器中声明的方法。
我终于尝试使用带有父组件的typescript继承,它没有任何模板,它只是一个父类,我使用"扩展ParentComponent",并将我的所有逻辑放在为父级。最后一种方法是最简单的方法,但我有强烈的感觉,这绝对不是好方法(组合而不是继承等)。
有没有办法正确地做到这一点?我来自铁轨上的红宝石,类似于"关注"在红宝石中会很棒。
答案 0 :(得分:0)
创建一个ParentComponent,它包含一个路由器插座,用于保存(ChildComponents)的唯一行为,并通过共享服务共享数据模型。
还包含lazyloading(使用loadchildren的路由)以获取模块特定的共享服务。