gpt4 book ai didi

javascript - 对象内未定义的值

转载 作者:行者123 更新时间:2023-12-02 23:59:18 26 4
gpt4 key购买 nike

我想用来自服务器的数据填充页面,并且能够更改信息,为此我使用 formbuilder 将来自服务器的数据作为默认值:

 createForm(){
this.getGeral()
this.getTiposTarefas()
this.formulario = this.fb.group({
'tipo_tarefa':[this.tarefa.tipoTarefa.id, Validators.compose([Validators.required])], // Cant set default values cuz the array is object is undefined
'data_tarefa': [this.tarefa.data_tarefa, Validators.compose([Validators.required])],// Cant set default values cuz the array is object is undefined
'inicio_tarefa': [this.tarefa.inicio, Validators.compose([Validators.required])],// Cant set default values cuz the array is object is undefined
'fim_tarefa': [this.tarefa.fim, Validators.compose([Validators.required])]// Cant set default values cuz the array is object is undefined
});
}

但我它变得不确定。我在 de subscribe 函数中尝试了 console.log() ,并且填充了对象“Tarefa”,但它没有超出函数范围。

    import { Component, OnInit } from '@angular/core';
import { NavParams, ModalController } from '@ionic/angular';
import { TarefadetalheService } from './tarefadetalhe.service';
import { Tarefa } from '../../models/tarefa.model';
import { TipoTarefa } from '../../models/tipotarefa.model';

import { FormGroup, FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'app-tarefas-detalhe',
templateUrl: './tarefas-detalhe.page.html',
styleUrls: ['./tarefas-detalhe.page.scss'],
})
export class TarefasDetalhePage implements OnInit {
idTarefa = null
tarefa: Tarefa
tiposTarefas : TipoTarefa[]
formulario: FormGroup
constructor(
private navParams: NavParams,
private getTarefaDetalhe: TarefadetalheService,
private modalController:ModalController,
public fb: FormBuilder) { }

ngOnInit() {

this.createForm()
}

getGeral(){
this.idTarefa = this.navParams.get('id_tarefa');
this.getTarefaDetalhe.recuperaDetalhes().subscribe((data: Tarefa)=>{ //passar o id da tarefa como parametro no recupera detalhes
this.tarefa = data
})
}

getTiposTarefas(){
this.getTarefaDetalhe.recuperaTiposTarefas().subscribe((data: TipoTarefa[])=>{
this.tiposTarefas = data
console.log(this.tiposTarefas) // here it has information
})
console.log(this.tiposTarefas) // here it has not information
}

createForm(){
this.getGeral()
this.getTiposTarefas()
this.formulario = this.fb.group({
'tipo_tarefa':[this.tarefa.tipoTarefa.id, Validators.compose([Validators.required])], // Cant set default values cuz the array is object is undefined
'data_tarefa': [this.tarefa.data_tarefa, Validators.compose([Validators.required])],// Cant set default values cuz the array is object is undefined
'inicio_tarefa': [this.tarefa.inicio, Validators.compose([Validators.required])],// Cant set default values cuz the array is object is undefined
'fim_tarefa': [this.tarefa.fim, Validators.compose([Validators.required])]// Cant set default values cuz the array is object is undefined
});
}
closeModal()
{
this.modalController.dismiss();
}
}

当我运行 Ionic 服务时,它会抛出以下错误,并且我无法在表单控件上设置默认值:

enter image description here

我的 HTML:

<ion-content padding *ngIf="tarefa != null">
<form [formGroup]="formulario">
<h4>
<ion-icon name="list-box"></ion-icon> Geral
</h4>
<ion-grid>
<ion-row>
<ion-col size="8">
<ion-label position="floating">Tipo de Tarefa</ion-label>
<ion-select [formControlName]="tipo_tarefa" okText="Confirmar" cancelText="Cancelar">
<ion-select-option *ngFor="let tipo of tiposTarefas" [value]="tipo.id">{{tipo.descricao}}</ion-select-option>
</ion-select>
</ion-col>
</ion-row>
</ion-grid>
<h4>
<ion-icon name="calendar"></ion-icon> Horário
</h4>
<ion-item-divider></ion-item-divider>
<ion-grid>
<ion-row>
<ion-col size="5">
<ion-label position="stacked">Data</ion-label>
<ion-datetime [formControlName]="data_tarefa" display-format="DD-MM-YYYY" max="2050-10-31" picker-format="DD-MM-YYYY"></ion-datetime>
</ion-col>
<ion-col size="3">
<ion-label position="stacked">Inicio</ion-label>
<ion-datetime [formControlName]="inicio_tarefa" display-format="HH:mm" picker-format="HH:mm" ></ion-datetime>
</ion-col>
<ion-col size="3">
<ion-label position="stacked">Fim</ion-label>
<ion-datetime [formControlName]="fim_tarefa" display-format="HH:mm" picker-format="HH:mm"></ion-datetime>
</ion-col>
</ion-row>
</ion-grid>
<h4>
<ion-icon name="person"></ion-icon> Cliente
</h4>
<ion-item-divider></ion-item-divider>
<ion-grid>
<ion-row>
</ion-row>
</ion-grid>
</form>
</ion-content>

最佳答案

删除函数getTiposTarefas(),然后进行以下更改。

createForm(){
this.getGeral();
this.getTarefaDetalhe.recuperaTiposTarefas().subscribe((data: TipoTarefa[])=>{
this.tiposTarefas = data;
this.formulario = this.fb.group({...put the fields...});
console.log(this.tiposTarefas) // here it has information
})
}

更新:您需要首先初始化这个 tarefa: Tarefa 对象。见下文

tarefa: Tarefa =  {
comentarios: '',
data_tarefa: '',
descricao: '',
fim: '',
id_aprovador: '',
id_cliente: '',
id_criador: '',
id_sala: '',
id_sistema: '',
id_solicitante: '',
inicio: '',
nome_aprovador: '',
nome_cliente: '',
nome_criador: '',
nome_sistema: '',
nome_solicitante: '',
numero: 0,
participante: [],
status_tarefa: 0,
tarefa: '',
tipoTarefa: {
id:'',
interna: null,
descricao: ''
}
};

那么它应该可以正常工作。

关于javascript - 对象内未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55248445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com