File tree 2 files changed +14
-3
lines changed
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> {
67
67
)
68
68
}
69
69
}
70
+ class AService extends VueService {
71
+ constructor ( ) {
72
+ super ( )
73
+ console . log ( 'aservice init' )
74
+ }
75
+ }
76
+
70
77
// 组件
71
78
@Autobind ( ) // 绑定this 也可以放到这里
72
- @Component ( { providers : [ CountService ] } ) // 声明自己的服务
79
+ @Component ( { providers : [ CountService , AService ] } ) // 声明自己的服务
73
80
class Home extends VueComponent {
74
81
// 构造函数注入服务,无需new
75
82
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 }) {
49
49
if ( options ?. exclude ?. length ) {
50
50
deps = deps . filter ( ( k ) => ! options . exclude ?. includes ( k ) )
51
51
}
52
- const injector = ReflectiveInjector . resolveAndCreate ( deps , parent )
52
+ const resolveProviders = ReflectiveInjector . resolve ( deps )
53
+ const injector = ReflectiveInjector . fromResolvedProviders ( resolveProviders , parent )
53
54
if ( options ?. globalStore ) {
54
55
// 如果作为全局的服务,则注入到根上面
55
56
const current = getCurrentInstance ( ) !
@@ -61,5 +62,8 @@ export function resolveComponent(target: { new (...args: []): any }) {
61
62
} else {
62
63
provide ( InjectorKey , injector )
63
64
}
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
65
69
}
You can’t perform that action at this time.
0 commit comments