无法读取属性' id'在Object.View中未定义

时间:2017-09-05 13:14:01

标签: angular typescript jhipster

加载表单以编辑角度条目时返回错误

我正在使用JHipster开发一个简单的应用程序,我将弹出对话框转换为一个页面,我很难加载数据进行编辑:

这是我的完整组件:

@Component({
selector: 'jhi-empresa-dialog',
templateUrl: './empresa-dialog.component.html'
})

export class EmpresaDialogComponent implements OnInit {

private subscription: Subscription;
private eventSubscriber: Subscription;
codigoCep: string;
empresa: Empresa;
isSaving: boolean;
cep: Cep;
estados: Estado[];
cidades: Cidade[];

constructor(
    public activeModal: NgbActiveModal,
    private alertService: JhiAlertService,
    private empresaService: EmpresaService,
    private cepService: CepService,
    private estadoService: EstadoService,
    private cidadeService: CidadeService,
    private route: ActivatedRoute,
    private router: Router,
    private eventManager: JhiEventManager
) {

}

ngOnInit() {
    this.isSaving = false;
    this.estadoService.query()
        .subscribe((res: ResponseWrapper) => { this.estados = res.json; }, (res: ResponseWrapper) => this.onError(res.json));

    this.subscription = this.route.params.subscribe((params) => {
        if (params['id']) {
            this.load(params['id']);
        }else {
            this.empresa = new Empresa();
        }
    });
    this.registerChangeInEmpresas();

}

load(id) {
    this.empresaService.find(id).subscribe((empresa) => {
        this.empresa = empresa;
        this.buscaCidadePorEstado();
        this.cep = empresa.cep;
        this.codigoCep = this.cep.codigoCep;
    });
}

registerChangeInEmpresas() {
    this.eventSubscriber = this.eventManager.subscribe(
        'empresaListModification',
        (response) => this.load(this.empresa.id)
    );
}

buscaCidadePorEstado() {
    this.cidadeService.cidadesPorEstado(this.empresa.estado.id)
        .subscribe((res: ResponseWrapper) => { this.cidades = res.json; }, (res: ResponseWrapper) => this.onError(res.json));
}

buscaCep() {
    this.cepService.cepPorCodigo(this.codigoCep)
        .subscribe((res: ResponseWrapper) => {
            this.cep = res.json;
            this.empresa.rua = this.cep.rua;
            this.empresa.bairro = this.cep.bairro;
            this.empresa.cep = this.cep;
            this.empresa.estado = this.cep.estado;
            this.buscaCidadePorEstado();
            this.empresa.cidade = this.cep.cidade
        }, (res: ResponseWrapper) => this.onError(res.json));
}

clear() {
    this.activeModal.dismiss('cancel');
}

save() {
    this.isSaving = true;
    if (this.empresa.id !== undefined) {
        this.subscribeToSaveResponse(
            this.empresaService.update(this.empresa));
        this.router.navigate(['/empresa'])
    } else {
        this.subscribeToSaveResponse(
            this.empresaService.create(this.empresa));
        this.router.navigate(['/empresa'])
    }

}

private subscribeToSaveResponse(result: Observable<Empresa>) {
    result.subscribe((res: Empresa) =>
        this.onSaveSuccess(res), (res: Response) => this.onSaveError(res));
}

private onSaveSuccess(result: Empresa) {
    this.eventManager.broadcast({ name: 'empresaListModification', content: 'OK'});
    this.isSaving = false;
    this.activeModal.dismiss(result);
}

private onSaveError(error) {
    try {
        error.json();
    } catch (exception) {
        error.message = error.text();
    }
    this.isSaving = false;
    this.onError(error);
}

private onError(error) {
    this.alertService.error(error.message, null, null);
}

trackCepById(index: number, item: Cep) {
    return item.id;
}

trackEstadoById(index: number, item: Estado) {
    return item.id;
}

trackCidadeById(index: number, item: Cidade) {
    return item.id;
}
}

enter image description here

奇怪的是,值被加载到表单中并显示在页面上,我甚至可以更改它们,但是控制台会打印几次上面的错误

我检查了对象,两个变量都不为空

0 个答案:

没有答案