升级的角度服务无法使用角度组件:无法获取未定义的错误
问题描述:
我正在将AngularJS应用升级为角度。 但我现在已经陷入困境。 我正在尝试获取角度来处理主线路,并不起作用。该错误似乎来自升级的服务。升级的角度服务无法使用角度组件:无法获取未定义的错误
当我让angularJS处理路线,它使用相同的组件工作正常。
的App-routing.module
class HybridUrlHandlingStrategy implements UrlHandlingStrategy {
// use only process the `home` url
shouldProcessUrl(url:UrlTree) {
console.log(url.toString());
return url.toString() === '/' || url.toString() ==='/home' ;
}
extract(url: UrlTree) { return url; }
merge(url: UrlTree, whole: UrlTree) { return url; }
}
const appRoutes: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: 'home', component: HomeComponentNg2 }
];
@NgModule({
imports:[
RouterModule.forRoot(appRoutes)
],
exports: [RouterModule ],
providers:[
{ provide: UrlHandlingStrategy, useClass: HybridUrlHandlingStrategy }
]
})
export class AppRoutingModule { }
AJS升级-providers.ts
export function statsServiceFactory(i: any) {
return i.get('StatsService');
}
export const StatsServiceProvider = {
provide: StatsService,
useFactory: statsServiceFactory,
deps: ['$injector']
};
export function authServiceFactory(i:any){
return i.get('AuthService');
}
export const AuthServiceProvider = {
provide: AuthService,
useFactory: authServiceFactory,
deps: ['$injector']
stats.service
export class StatsService {
static $inject = ['$http'];
constructor(private $http) {
this.$http = $http;
};
getEmplStats() {
console.log('getEmplstats');
return this.$http.get('./src/app/JSON/employeeStats.json')
.then(res => {
console.log(res);
return res
}).catch(error => {
console.log(error);
})
};
getCustStats() {
console.log('getCustStats');
return this.$http.get('./src/app/JSON/customerStats.json')
.then(res => {
console.log(" getCustStats "+res);
return res
}).catch(error => {
console.log(error);
})
}
}
export default StatsService;
误差
core.es5.js?0445:1084 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'get' of undefined
TypeError: Cannot read property 'get' of undefined
at statsServiceFactory (eval at 327 (http://localhost:8080/app.js:653:1), <anonymous>:6:13)
at Ng2AppModuleInjector.get (ng:///Ng2AppModule/module.ngfactory.js:161:69)
at Ng2AppModuleInjector.getInternal (ng:///Ng2AppModule/module.ngfactory.js:271:52)
at Ng2AppModuleInjector.NgModuleInjector.get (eval at <anonymous> (http://localhost:8080/vendor.js:84:1), <anonymous>:3783:44)
at resolveDep (eval at <anonymous> (http://localhost:8080/vendor.js:84:1), <anonymous>:11245:45)
我只是不明白为什么让AngularJS处理路线似乎很好,但如果我让Angular处理它,它就会崩溃。 任何帮助将apreciated
编辑:增加了客户stats.ng2.component
@Component({
selector: 'customer-stats2',
templateUrl: './customer-stats.ng2.component.html'
})
export class CustomerStatsComponentNg2 implements OnInit{
customerStats:any;
constructor(private ss:StatsService){
}
ngOnInit()
{
console.log('ngoninit cust stats ')
this.ss.getCustStats().
then(custStats => this.customerStats = custStats.data)
.then(error => console.log(error))
}
}
答
我面临着同样的问题,而试图升级angularjs服务和角度使用。您可以找到角码here中引发的错误。
当我们他们提到,如果我们先NG1应用自举NG2应用中,我们可能会遇到这个问题,吴会议期间采访了角的球队,他们建议改用引导过程做NG1先ng2将解决这个问题。我们还没有尝试切换引导顺序,但希望这可以解决您的问题。
'从'@ angular/http''导入{Http}' – anoop
不幸的是,没有帮助。它让我感到困惑,因为在angularJS处理路由时它工作正常。 – JSB
您还没有将您的服务添加到您的提供者数组中?它会尽管抛出一个不同的错误.... – Alex