【发布时间】:2017-09-09 08:16:18
【问题描述】:
我正在尝试创建一个服务来检测我的应用程序的 redux 状态的变化,以便能够重定向到不同的页面。
我得到的错误是:
Error: [$injector:unpr] Unknown provider: translate2FilterProvider <-
translate2Filter
http://errors.angularjs.org/1.6.4/$injector/unprp0=translate2FilterProvider%20%3C-%20translate2Filter
这是我的重定向服务:
import * as angular from 'angular'
import {
IStateService,
} from 'angular-ui-router'
import {subscribe} from 'awesomeLibrary_web_stateSubscribe'
import {getUser} from '../redux/get'
import {
INgRedux,
State,
} from '../redux/redux'
import {RouterParams} from '../redux/root/router/routerReducers'
export class RedirectionService {
constructor(
public $ngRedux: INgRedux,
public $stateParams: RouterParams,
public $state: IStateService,
$scope: angular.IScope,
) {
$scope.$on('$destroy', this.$ngRedux.connect(s => this._mapState(s))(this))
$ngRedux.subscribe(async () => { await this.redirectinDetection() })
}
public async redirectinDetection() {
const state = this.$ngRedux.getState()
const user = getUser(state)
if (this.$state.is('site.user')) {
// Here it will redirect to user/:userId
if (user && !this.$stateParams.userId) {
this.$state.go('site.user', {userId: user.id})
}
else if (!user) {
// not logged in
}
}
}
private _mapState = (state: State) => ({
user: getUser(state),
})
}
angular.module('Site')
.service('redirectionSerivce', RedirectionService)
下面是我尝试将 redirectionService 注入的组件。它是主要的顶级组件,因为我希望此服务在整个站点上运行:
import * as es6Promise from 'es6-promise'
es6Promise.polyfill()
import * as angular from 'angular'
import 'angular-animate'
import 'angular-aria'
import 'angular-local-storage'
import 'angular-material'
import 'angular-messages'
import 'angular-ui-router'
import 'ng-redux'
import {
INgRedux,
State,
} from './redux/redux'
import {RouterParams} from './redux/root/router/routerReducers'
import '../../node_modules/angular-elastic/elastic'
import '../../node_modules/angular-material/angular-material.min.css'
import './cUser/cUser'
import './mConfig/persistentQueryParamsConfig'
import './mConfig/routeConfig'
import './mDirectives/mDirectives'
import './mServices/mServices'
import './redux/redux'
class SiteController {
constructor(
$ngRedux: INgRedux,
) {
$ngRedux.connect(s => this._mapState(s))(this)
}
private _mapState = (state: State) => ({
metaTitle: 'title'),
})
}
class StatelessController {
constructor(
public $stateParams: RouterParams,
) {}
}
angular.module('Site').controller('SiteController', SiteController)
angular.module('Site').controller('StatelessController', StatelessController)
angular.module('Site').run([
'redirectionService',
angular.noop, // tslint:disable-line:no-unbound-method
])
【问题讨论】:
标签: angularjs angular-services angularjs-injector