Javascript 角度7在阵列的最后位置显示按钮

Javascript 角度7在阵列的最后位置显示按钮,javascript,angular,Javascript,Angular,这把军刀是用来对付敌人的。 在最后一个职位上,我们需要一个新的团队(añadir elemento)和一个单独的团队 从'@angular/core'导入{Component,OnInit,Output,EventEmitter}; 从“@angular/forms”导入{FormGroup、FormControl、Validators、FormArray、FormBuilder}; 从“@jdl solutions/koguiapi”导入{Evento,EventosService}”; 从

这把军刀是用来对付敌人的。 在最后一个职位上,我们需要一个新的团队(añadir elemento)和一个单独的团队

从'@angular/core'导入{Component,OnInit,Output,EventEmitter};
从“@angular/forms”导入{FormGroup、FormControl、Validators、FormArray、FormBuilder};
从“@jdl solutions/koguiapi”导入{Evento,EventosService}”;
从“../../../eventos/listas eventos/evento store.service”导入{EventoStoreService}”;
@组成部分({
选择器:“应用程序添加新预订详细信息表单”,
templateUrl:'。/添加新的reserva详细信息表单.component.html',
styleUrls:['./添加新的reserva详细信息表单.component.sass'],
提供者:[事件服务]
})
导出类AddNewReservaDetailFormComponent实现OnInit{
@Output()模式:EventEmitter=new EventEmitter();//Salida de evento para cerrar模式
@Output()reservaNewRegistry:EventEmitter=new EventEmitter();//Salida del formulario
reservaNewRegistryForm:FormGroup;//Formulario
reservaNewRegistryList:FormArray;//Datos Matriz
Imagencomrobante=null;
fotoComprobante:File=null;
德贝:数字=0;
蒙托:数字=0;
事件列表;
已选择Evento:Evento;
公共事件:事件;
地位
获取DatosuarioFormGroup(){
将此.reservaNewRegistryForm.get('Datosuario')作为FormArray返回;
}
构造函数(公共fb:FormBuilder、公共eventosService:eventosService、私有EventOSReservice:EventOSReservice){
}
恩戈尼尼特(){
//在事件或保留模块中,不存在可实现的代码片段
if(this.eventoStoreService.eventoSelected!=未定义){
//这是一种可变的控制事件的方法
this.evento=this.eventoStoreService.eventoSelected;
this.status='EVENTOS';
}否则{
//这是一个非常有趣的故事,它是一个非常有趣的故事
this.eventoservice.getempresasbydeventos('antioquia',
'',0,0,[],[],'',响应,真)
.订阅(res=>{
//如果是共同行动的话,那么就不需要在博拉多或阿霍拉的村庄里工作了
this.eventosList=res.body;
});
this.status='RESERVAS';
}
//配方乳酪
this.reservaNewRegistryForm=this.fb.group({
DatoSuario:this.fb.array([this.createDatoSuario()]))
});
//乌萨里奥大教堂
this.reservaNewRegistryList=this.reservaNewRegistryForm.get('Datosuario')作为FormArray;
log(this.reservaNewRegistryList.length);
}
//配方食品
createDatoSuario():FormGroup{
返回此.fb.group({
名称:新FormControl(“”,需要验证程序),
apellido:新表单控件(“”,需要验证程序),
correo:newformcontrol(“”,[Validators.email,Validators.pattern(/^[a-zA-Z0-9.!$%&'*+/=?^{{124;}-]+@[a-zA-Z0-9-]+(?:\[a-zA-Z0-9-]+*$/),
tipoDocumento:新的FormControl(“”,需要验证器),
documentoID:新FormControl(“”,需要验证程序),
telefono:新的FormControl(“”,需要验证器),
慷慨:新表单控件(“”,需要验证程序),
ABNO:新表单控件(“”,需要验证程序),
debe:新表单控件(“”),
})
}
/**
*@name adddatosuario
*@desc Metodo para añadir una nueva tarjeta
*/
AddDatosuario(){
this.reservaNewRegistryList.push(this.createdatosuario());
}
/**
*@name removedatosuario
*@desc Metodo para eliminar una tarjeta
*@param索引
*/
已删除的目录(索引){
this.reservaNewRegistryList.removeAt(索引);
}
/**
*@name onfilecomrobante
*描述入口和容器的入口和入口,以及需要的管道基础64
*你是我的朋友吗
*帕拉埃维亚尔API酒店
*@param文件
*/
onFileComprobante(文件:文件列表){
设foto=files.item(0);
let reader=new FileReader();
reader.onload=(事件:any)=>{
this.imagencomrobante=event.target.result;//Base64-para-propagar-en-otras-vistas
};
this.fotoComprobante=foto;//将环境API归档
reader.readAsDataURL(foto);
//如果(此.foto.size>3200000){
//这是一个错误('La imagen Ingreada supera los 3MB,验证La imagen y vuelva a a cargarla');
//这是。去适应症=真;
//}其他{
//this.deshabilitar=false;//Se habilita boton
// }
}
/**
*@name calculoDebe
*@desc Metodo que calcula el valor que se debe en la tarjeta
*@param abono
*/
加尔各洛德贝(阿博诺){
设num=parseInt(abono);
this.debe=this.evento.valor-num;
}
/**
*@name closeModal
*@desc Metodo que emite un evento al COMPONENT padre para cerrar la modal
*/
closeModal(){
this.modal.emit('close');
}
/**
*@name onsubmit
*@desc Metodo que valida el formulario,se construye el objeto y se envia
*/
onSubmit(){
//目标和目标人物阵列
log(this.reservaNewRegistryForm.value);
//空气污染指数
让fecha=newdate().getTime();
//从可变形式到责任型
让responsable=this.reservaNewRegistryForm.value.datosuario[0];
如果(this.status=='EVENTOS'){
让公式化={
id:0,
empresa:this.evento.empresa,
tipo:‘事件’,
redId:this.evento.id,
参考:“无”,
programacion:空,
电影:[
{
埃斯塔多:“新潮”,
登记人:15201265478,
蒙托博纳多:20万,
费查:15201265478,
notas:“没有干草notas”
}
],
蒙托托塔尔:50万,
蒙托博纳多:20万,
创建日期:15201265478,
更新日期:152324587965,
<form [formGroup]="form">
    <ngb-accordion #accordion formArrayName="datosUsuario" 
     [closeOthers]="true" activeIds="pannel0">
        <ngb-panel *ngFor="let group of form.get('datosUsuario').controls;let i=index" 
       [formGroupName]="i" 
       [id]="'pannel'+i">
               <ng-template ngbPanelHeader let-opened="opened">
                   <button ngbPanelToggle class="btn btn-link p-0">Datos del Usuario</button>
         </ng-template>
         <ng-template ngbPanelContent>
               Name: <input name="name" formControlName="name">
               <button (click)="add()">Add</button>
         </ng-template>
     </ngb-panel>
  </ngb-accordion>
</form>
  @ViewChild('accordion',{static:false}) accordion:NgbAccordion
  createFormGroup()
  {
    return new FormGroup({
        name:new FormControl()
      })
  }
  add()
  {
    const array=this.form.get('datosUsuario') as FormArray
    array.push(this.createFormGroup())
    setTimeout(()=>{
       this.accordion.expand("pannel"+(array.controls.length-1))
    })
  }