Angular服务在其他服务中不起作用

时间:2019-05-07 20:57:58

标签: angular angular-services

我正在使用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 :(得分:0)

您是否将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...
    }

}