NativeScript Schematics-单例服务构造函数被多次调用

时间:2018-12-17 01:58:23

标签: angular nativescript-angular nativescript-schematics

Singleton Service构造函数在nativescript-schematics代码共享项目中被多次调用。这是我的package.json中的一些重要的依赖项版本:

"tns-android": {"version": "5.0.0"} "@angular/core": "~7.1.0", "nativescript-angular": "^7.1.0", "tns-core-modules": "^5.0.5", "@nativescript/schematics": "^0.4.0", "nativescript-dev-typescript": "^0.7.8", "nativescript-dev-webpack": "^0.17.0", "typescript": "~3.1.1"

我已经尝试过angular official docs中所述的providedIn: 'root',并且还检查了singletonInstance。构造函数被多次调用。

@Injectable({  providedIn: 'root'})
export class UserService {
  constructor(private _http: HttpClient) {
if (!UserService.singletonInstance) {
  console.log('in user service constructor');
  UserService.singletonInstance = this;
} else {
  return UserService.singletonInstance;
}

}

因为我们有app.module.ts和app.module.tns.ts,我需要使用forRoot吗?

2 个答案:

答案 0 :(得分:2)

@Injectable({  providedIn: 'root'})
export class UserService {
  constructor(private _http: HttpClient) {
  }
}

上面的代码就足够了。并且您需要在控制器中导入UserService,例如

@import UserService from ...;
class MyController{
  constructor(private userService: UserService){}
}

答案 1 :(得分:-1)

经过进一步调查,我发现Visual代码intellisense已从.js文件而不是.ts文件导入了服务。因此,它要进行多个构造函数调用。我要补充一下,因为这可能对某人的调试很有帮助。