【发布时间】:2019-01-30 13:48:13
【问题描述】:
我在 angularjs 中有一个应用程序,它被移植到 angular4。
我想在 angular4 中创建一个提供程序,并将其注入到 angularJS 的 app.config 中。
现在,我有以下内容
import { UtilsService } from './../utils/utils.service';
import { Injectable, Inject } from '@angular/core';
import { downgradeInjectable } from '@angular/upgrade/static';
import { TranslateService } from '@ngx-translate/core';
import { ENGLISH } from '../../../../../languages/locale-en';
import { JAPANESE } from '../../../../../languages/locale-ja';
declare const angular: angular.IAngularStatic;
// USED to setup translation for angular4 from angularjs
@Injectable()
export class Angular4TranslateProvider{
constructor(@Inject(TranslateService) public _translate: TranslateService) {}
SetupAngular4Translation(){
this._translate.setDefaultLang(UtilsService.DefaultLanguage());
this._translate.use(UtilsService.DefaultLanguage());
this._translate.setTranslation('en', ENGLISH );
this._translate.setTranslation('jp', JAPANESE );
}
Use(lg:string){
this._translate.use(lg);
}
}
angular.module('b-eee').factory('angular4TranslateProvider', downgradeInjectable(Angular4TranslateProvider));
它被添加到 App.Module 中:
providers: [
Angular4TranslateProvider
],
我试图在我的 app.config 中调用它:
import { app } from './main';
(function() {
'use strict';
app.value('$routerRootComponent', 'app')
app.config(["$routeProvider"
, "angular4TranslateProvider"
, function(
$routeProvider
, angular4TranslateProvider
) {
但我在页面加载时出错:
错误:[$injector:unpr] 未知提供者:angular4TranslateProvider。
我怎样才能让它工作?
抱歉,plunker 的演示很复杂
编辑:提供程序在我的 angularJS 应用程序中无处不在,但我想通过它在 app.config.js 中有提供程序,因此是应用程序的主要组件。只有在那里它才会返回 undefined。
【问题讨论】:
-
为什么要将 AngularJS 与 Angular 混合使用?我担心它会起作用吗?
-
您是否将
Angular4TranslateProvider添加到您的app.module 文件的providers 数组中? -
@diecho 因为我正在 angular4 中升级 angularjs 应用程序。我的应用是混合的,我需要它。
-
@royson 是的,我在所有模块中都添加了。我可以从 app.config 中访问它,但在创建时没有提供者。