NativeScript Schematics - одноэлементный конструктор службы, вызываемый несколько раз - PullRequest
0 голосов
/ 17 декабря 2018

Конструктор 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"

Я пробовал 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;
}

}

Нужно ли использовать forRoot , поскольку у нас есть app.module.ts и app.module.tns.ts?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Проведя дополнительное исследование, я обнаружил, что intellisense для визуального кода импортировал службу из файла .js вместо файла .ts.Следовательно, он делал множественные вызовы конструктора.Я добавляю это, поскольку это может быть полезно для чьей-либо отладки.

0 голосов
/ 09 января 2019
@Injectable({  providedIn: 'root'})
export class UserService {
  constructor(private _http: HttpClient) {
  }
}

Над кодом достаточно.И вам нужно импортировать UserService в контроллере, как

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