File tree Expand file tree Collapse file tree 2 files changed +14
-3
lines changed Expand file tree Collapse file tree 2 files changed +14
-3
lines changed Original file line number Diff line number Diff line change @@ -67,9 +67,16 @@ class HomeChild extends VueComponent<HomeChild_Props> {
6767 )
6868 }
6969}
70+ class AService extends VueService {
71+ constructor ( ) {
72+ super ( )
73+ console . log ( 'aservice init' )
74+ }
75+ }
76+
7077// 组件
7178@Autobind ( ) // 绑定this 也可以放到这里
72- @Component ( { providers : [ CountService ] } ) // 声明自己的服务
79+ @Component ( { providers : [ CountService , AService ] } ) // 声明自己的服务
7380class Home extends VueComponent {
7481 // 构造函数注入服务,无需new
7582 constructor ( private countService : CountService ) {
Original file line number Diff line number Diff line change @@ -49,7 +49,8 @@ export function resolveComponent(target: { new (...args: []): any }) {
4949 if ( options ?. exclude ?. length ) {
5050 deps = deps . filter ( ( k ) => ! options . exclude ?. includes ( k ) )
5151 }
52- const injector = ReflectiveInjector . resolveAndCreate ( deps , parent )
52+ const resolveProviders = ReflectiveInjector . resolve ( deps )
53+ const injector = ReflectiveInjector . fromResolvedProviders ( resolveProviders , parent )
5354 if ( options ?. globalStore ) {
5455 // 如果作为全局的服务,则注入到根上面
5556 const current = getCurrentInstance ( ) !
@@ -61,5 +62,8 @@ export function resolveComponent(target: { new (...args: []): any }) {
6162 } else {
6263 provide ( InjectorKey , injector )
6364 }
64- return injector . get ( target )
65+ const compInstance = injector . get ( target )
66+ // 处理一下providers中的未创建实例的服务
67+ if ( options ?. providers ?. length ) resolveProviders . forEach ( ( k ) => injector . get ( k . key . token ) )
68+ return compInstance
6569}
You can’t perform that action at this time.
0 commit comments