Угловой сервис не работает в рамках другого сервиса - PullRequest
0 голосов
/ 07 мая 2019

Я использую библиотеку ngx-translate для переводов. В моих компонентах (лениво загруженные маршруты) Когда я устанавливаю следующее, оно работает нормально:

constructor( public translate:TranslateService ) {
    this.translate.setDefaultLang( this.langService.lang );
    this.translate.use( this.langService.lang );
}

У меня есть свой LangService , чтобы сохранить выбранный язык пользователя. Я установил свойство lang и использую там TranslateService:

lang:string = "fa";

constructor(public translate: TranslateService) {

    // this works
    console.log(this.lang);

    // this doesn't work
    this.translate.setDefaultLang( this.lang );
    this.translate.use( this.lang );

}

Теперь я просто внедряю LangService в свой компонент, но перевод не работает. Есть идеи?

Примечание. Я импортировал TranslateModule в SharedModule и импортировал этот SharedModule в другие лениво загруженные модули.

1 Ответ

0 голосов
/ 08 мая 2019

Вы добавили TranslateModule в массив экспорта в SharedModule?

Предоставляется ли пользовательский LangService в корне?

Вот пример:

1- Ваш индивидуальный сервис:

@Injectable({
    providedIn: 'root' 
})
export class CustomTranslateService {
       constructor(private translate: TranslateService) {}
}

2 - Добавьте TranslateModule для экспорта в массив SharedModule.

3 - добавьте свой компонент в ваши компоненты:

@Component({
    selector: 'app-footer',
    templateUrl: './footer.component.html',
    styleUrls: ['./footer.component.scss']
})
export class FooterComponent implements OnInit {
    constructor(private translate: CustomTranslateService) {
    }

    ngOnInit(): void {
          // Use it here...
    }

}
...