Angular2 - как инициализировать данные внутри сервиса?


У меня есть две услуги. login.service.ts и environment-specific.service.ts.

В login.service.ts мне нужно инициализировать объект Json из environment-specific.service.ts, который передает пару ссылок.

Пример использования - как заставить это работать в servcie без ngOnInit(){}, потому что ngOnInit() не может использоваться в servcie согласно Angular2 Lifecycle Hook.

Здесь вы найдете часть, которую я должен инициализировать внутри в login.service.ts - Конечно, без метода ngOnInit():

...
import { EnvSpecific } from '../models/env-specific';
import { ActivatedRoute } from "@angular/router";

@Injectable()
export class LoginService {

   link1: string;
   link2: string;
   link3: string;

   constructor(private http: Http, private fbuilder:FormBuilder, private route: ActivatedRoute) { }

   ngOnInit(){
      this.route.data
         .subscribe((data: { envSpecific: EnvSpecific }) => {
            this.link1 = data.envSpecific.link1;
            this.link2 = data.envSpecific.link2;
            this.link3 = data.envSpecific.link3;
      });
   }
   ...
   ...
}

И я хотел бы передать ссылку(ы) на URL, переданный другой вызов API http.post. например:

...
var obsRequest = this.http.post( this.link1, serializedForm, this.options )
...

Ошибка очевидна: link1 is undefined

Какие-нибудь предложения или намеки, пожалуйста?

1 2

1 ответ:

Вы можете переместить свою логику в ngOnInit в вашем сервисе в конструктор сервиса. Но даже в этом случае свойство link1 может быть установлено не сразу, поэтому вы можете указать для него значение по умолчанию.

, но это похоже на антипаттерн для меня. Вы можете просто использовать собственную среду Angular 2, которая настроена для вас по умолчанию с помощью Angular CLI.

Он имеет оба варианта разработки / производства, и вы можете установить свои значения там, как вы хотите, и просто импортировать его в свой обслуживание. В зависимости от того, как вы делаете ng build (Если вы передаете флаг -prod или нет), будут использоваться различные переменные env.