【发布时间】:2016-07-26 23:34:11
【问题描述】:
我只是按照使用 InMemoryBackendService 来模拟服务器的教程。但是,我得到了这个错误,不知道为什么。
这是'/app/job/job-page.ts'
import {Component, ViewEncapsulation} from '@angular/core';
import {ROUTER_DIRECTIVES} from '@angular/router-deprecated';
import {JobService} from './job-service';
import {Job} from './model/job';
@Component({
directives: [
ROUTER_DIRECTIVES,
],
selector: '[job-page]',
host: {
class: 'job-page app'
},
template: require('./job-page.html'),
encapsulation: ViewEncapsulation.None,
styles: [require('./job-page.scss'), require('./login-page.scss')],
providers: [JobService]
})
export class JobPage {
public job: Job;
constructor(private jobService: JobService){}
ngOnInit(){
this.getJob();
}
getJob(){
this.jobService.getJob().then((job) => {
this.job = job;
console.log(job);
})
}
}
这是文件'/app/job-service.ts'
import { Injectable } from '@angular/core';
import { Job } from '../job-list-page/job';
import { Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class JobService{
private jobUrl = './app/job-page/job';
constructor(private http: Http){}
getJob(): Promise<Job> {
return this.http.get(this.jobUrl)
.toPromise()
.then((response) => response.json().data)
.catch(this.handleError);
}
private handleError(error: any) {
return Promise.reject(error.message || error);
}
}
这是文件'app/job-page/job-data.ts'
export class JobData {
createDb() {
let job = [
{ id: '1', name: 'Windstorm' },
{ id: '2', name: 'Bombasto' },
{ id: '3', name: 'Magneta' },
{ id: '4', name: 'Tornado' }
];
return {job};
}
}
这是控制台日志:
EXCEPTION: TypeError: Cannot read property '0' of undefined
browser_adapter.ts:78EXCEPTION: TypeError: Cannot read property '0' of undefinedBrowserDomAdapter.logError @ browser_adapter.ts:78
browser_adapter.ts:78STACKTRACE:BrowserDomAdapter.logError @ browser_adapter.ts:78
browser_adapter.ts:78TypeError: Cannot read property '0' of undefined
at InMemoryBackendService.parseId (http://localhost:3000/main.bundle.js:146311:37)
at InMemoryBackendService.handleRequest (http://localhost:3000/main.bundle.js:146137:23)
at InMemoryBackendService.createConnection (http://localhost:3000/main.bundle.js:146095:25)
at httpRequest (http://localhost:3000/main.bundle.js:78654:21)
at Http.get (http://localhost:3000/main.bundle.js:78703:17)
at JobService.getJob (http://localhost:3000/main.bundle.js:211008:27)
at JobPage.getJob (http://localhost:3000/main.bundle.js:210956:26)
我认为我的代码是正确的。我按照教程一步一步来。只是不知道我的代码有什么问题。
【问题讨论】:
-
模板
job-page.html的内容是什么?
标签: angular angular2-template angular2-services