2017-07-28 79 views
0

我试图建立我的应用程序的生产,解决了所有的错误后,有一个错误,我似乎无法弄清楚。错误尝试构建 - 生产或服务 - 生产

运行纳克构建--prod时,会出现以下的错误:在d

ERROR:/1.Work/2.Projects/Application/Quintiles/IHRegistery/4.UI/iHreg/src/ $$ _ gendir/app/pages/visit/component/visitInfo/visitInfo.component.ngfactory.ts(3860,30):在'VisitInfoComponent'类型上存在属性'Visit'并不存在 。

这是我的旅行重量:

import { Component, Input, OnChanges, OnInit } from '@angular/core'; 
import { Visit } from '../../../../model/Visit'; 
import { FormGroup, FormBuilder, Validators } from '@angular/forms'; 
import { VisitService } from '../../visit.service'; 
import { Router } from '@angular/router'; 
import { APIConstants } from '../../../../helpers/Constants/const-apis'; 
import { Message } from '../../../../model/Message'; 

@Component({ 
    selector: 'cmp-visit-info', 
    templateUrl: 'visitInfo.html', 
    styleUrls: ['visitInfo.scss'], 
}) 
export class VisitInfoComponent implements OnInit, OnChanges { 
    @Input('visitItem') visitItem: Visit; 
    visitObj: Visit; 
    myForm: FormGroup; 

    // itemObj: Visit; 

    createObj: boolean = true; 

    message: Message = new Message(); 

    constructor(private visitService: VisitService, 
       private apiConst: APIConstants, 
       private route: Router, 
       private fb: FormBuilder) { 
    this.visitObj = new Visit(); 
    } 

    buildForm(): void { 
    this.myForm = this.fb.group({ 
     visitDate: [null, Validators.required], 
     weight: [null, Validators.required], 
     height: [null, Validators.required], 
     lowPressure: [null], 
     highPressure: [null], 
     heartRate: [null], 
     temp: [null], 
     surg: [null], 
     dent: [null], 
     phys: [null], 
     ortha: [null], 
     labAss: [null], 
     imag: [null], 
     trans: [null], 
     treat: [null], 
     lastComp: [null], 
    }); 

    this.myForm.valueChanges 
     .subscribe(data => this.onValueChanged(data)); 

    this.onValueChanged(); // (re)set validation messages now*/ 
    } 

    onValueChanged(data?: any) { 
    if (!this.myForm) { 
     return; 
    } 
    const form = this.myForm; 

    for (const field in this.formErrors) { 
     // clear previous error message (if any) 
     this.formErrors[field] = ''; 
     const control = form.get(field); 

     if (control && control.dirty && !control.valid) { 
     const messages = this.validationMessages[field]; 
     for (const key in control.errors) { 
      this.formErrors[field] += messages[key] + ' '; 
     } 
     } 
    } 
    } 

    ngOnInit() { 
    this.buildForm(); 

    /*this.itemObj = this.router.params.subscribe(params => { 
     this.itemObj = params; // (+) converts string 'id' to a number 
     console.log('params',this.itemObj); 
     if(this.itemObj.id){ 
      this.createObj=false; 

      this.visitObj = this.itemObj; 
      /!*this.visitObj.id=this.itemObj.id; 
      this.visitObj.visitDate=this.itemObj.visitDate; 
      this.visitObj.bloodPressureHigh=this.itemObj.bloodPressureHigh; 
      this.visitObj.bloodPressureLow=this.itemObj.bloodPressureLow; 
      this.visitObj.dentalProcedures=this.itemObj.dentalProcedures; 
      this.visitObj.complicationLastVisit=this.itemObj.complicationLastVisit; 
      this.visitObj.heartRate=this.itemObj.heartRate; 
      this.visitObj.height=this.itemObj.height; 
      this.visitObj.weight=this.itemObj.weight; 
      this.visitObj.userId=this.itemObj.userId; 
      this.visitObj.imagingProcedures=this.itemObj.imagingProcedures; 
      this.visitObj.labAssessmentsProcedures=this.itemObj.labAssessmentsProcedures; 
      this.visitObj.orthopedicProcedures=this.itemObj.orthopedicProcedures; 
      this.visitObj.patientId=this.itemObj.patientId; 
      this.visitObj.physiotherapyProcedures=this.itemObj.physiotherapyProcedures; 
      this.visitObj.temperature=this.itemObj.temperature; 
      this.visitObj.transfusionLastVisit=this.itemObj.transfusionLastVisit; 
      this.visitObj.surgicalOperationProcedures=this.itemObj.surgicalOperationProcedures; 
      this.visitObj.treatmentLastVisit=this.itemObj.treatmentLastVisit;*!/ 

     }else { 
      console.log('No params'); 
     } 


    });*/ 
    } 

    ngOnChanges() { 
    console.log('visit-info', this.visitItem); 
    // console.log('visit-info is empty', this.helper.isEmpty(this.visitItem)); 
    if (this.visitItem !== undefined) { 
     this.visitObj = this.visitItem; 
     this.createObj = false; 
    } else { 
     this.createObj = true; 
    } 
    } 

    submitVisit() { 
    console.log('submit'); 
    if (this.createObj) { 
     this.createVisit(); 
    } else { 
     this.updateVisit(); 
    } 
    } 

    createVisit(resolve?, reject?) { 
    this.visitObj.userId = this.apiConst.getLocalStorageData(this.apiConst.LSUSERID); 
    this.visitObj.patientId = this.apiConst.getLocalStorageData(this.apiConst.LSPATIENTID); 

    console.log('create Obj', this.visitObj); 

    this.visitService.createPatientVisit(this.visitObj).subscribe(res => { 
     if (res.success && res.returnObject !== null) { 
     this.message.type = 'success'; 
     this.message.body = 'Visit Create Successfully'; 
     window.location.reload(); 

     if (resolve) { 
      resolve(true); 
     } 

     } 
    }, err => { 
     console.log(err); 
     this.message.type = 'danger'; 
     this.message.body = 'Visit Creation failed, please try again later.'; 
     if (reject) { 
     reject(false); 
     } 

    }); 
    } 

    updateVisit(resolve?, reject?) { 
    console.log('update Obj', this.visitObj); 
    this.visitService.updatePatientVisit(this.visitObj, this.visitObj.id).subscribe(res => { 
     console.log('res-obj-updated', res); 

     if (res.success) { 
     this.message.type = 'success'; 
     this.message.body = 'Visit update Successfully'; 
     window.location.reload(); 

     if (resolve) { 
      resolve(true); 
     } 

     } 
    }, err => { 
     console.log(err); 
     this.message.type = 'danger'; 
     this.message.body = 'Updating the visit failed, please try again.'; 

     if (reject) { 
     reject(false); 
     } 

    }); 
    } 

    saveBeforeNavigation(): Promise<boolean> { 
    return new Promise((resolve, reject) => { 
     if (this.createObj) { 
     this.createVisit(resolve, reject); 
     } else { 
     this.updateVisit(resolve, reject); 
     } 
    }); 
    } 

    formErrors = { 
    visitDate: '', 
    weight: '', 
    height: '', 
    lowPressure: '', 
    highPressure: '', 
    heartRate: '', 
    temp: '', 
    surg: '', 
    dent: '', 
    phys: '', 
    ortha: '', 
    labAss: '', 
    imag: '', 
    trans: '', 
    treat: '', 
    lastComp: '', 
    }; 

    validationMessages = { 
    visitDate: { 
     'required': 'Regimen Date is required.', 
    }, 
    weight: { 
     'required': ' Type is required.', 
    }, 
    height: { 
     'required': ' Drug Name is required.', 
    }, 
    lowPressure: {}, 
    highPressure: {}, 
    heartRate: {}, 
    temp: {}, 
    surg: {}, 
    dent: {}, 
    phys: {}, 
    ortha: {}, 
    labAss: {}, 
    imag: {}, 
    trans: {}, 
    treat: {}, 
    lastComp: {}, 

    }; 

    beforeSaveValidation(url) { 
    let confirm = window.confirm('Save changes?'); 

    if (confirm) { 
     this.saveBeforeNavigation().then(whenResolve => { 
     this.route.navigate([url]); 
     }, whenReject => { 
     alert('couldn\'t save the data. Server error occurred'); 
     }); 
    } 
    } 
} 

我的角CLI版本:1.0.4

编辑

这是visitInfo模板:

<ba-card [title]="Visit" baCardClass="with-scroll"> 
<div class="widgets"> 

    <form (ngSubmit)="submitVisit()" [formGroup]="myForm"> 

    <div class="row"> 
    <div class="col-md-12"> 

     <div class="row"> 
     <div class="form-group col-3"> 
      <label class="control-label">Date Of Visit</label> 
      <input type="date" class="form-control col-9" [(ngModel)]="visitObj.visitDate" 
       formControlName="visitDate" id="visitDate"> 
     </div> 
     </div> 
     <ba-card title="Vital Signs" baCardClass="with-scroll"> 

     <div id="profile"> 
      <div class="row"> 
      <div class="form-group col-2"> 
       <label class="control-label">Weight (KG)</label> 
       <input type="number" class="form-control col-6" [(ngModel)]="visitObj.weight" formControlName="weight" id="weight"> 
       <div *ngIf="formErrors.weight" class="col-3 alert alert-danger"> 
       {{ formErrors.weight }} 
       </div> 
      </div> 

      <div class="form-group col-2"> 
       <label class="control-label">Height (cm)</label> 
       <input type="number" class="form-control col-6" [(ngModel)]="visitObj.height" formControlName="height" id="height"> 
       <div *ngIf="formErrors.height" class="col-3 alert alert-danger"> 
       {{ formErrors.height }} 
       </div> 
      </div> 
      <div class="form-group col-3"> 
       <label>Blood Pressure (mmHg)</label> 
       <div class="row"> 
       <div class="col-5"> 
        <input type="number" class="form-control" [(ngModel)]="visitObj.bloodPressureHigh" formControlName="highPressure" id="highPressure"> 
        <div *ngIf="formErrors.highPressure" class="col-3 alert alert-danger"> 
        {{ formErrors.highPressure }} 
        </div> 
       </div> 
       <div class="col-1 text-center"><span class="h3">/</span></div> 
       <div class="col-5"> 
        <input type="number" class="form-control" [(ngModel)]="visitObj.bloodPressureLow" formControlName="lowPressure" id="lowPressure"> 
        <div *ngIf="formErrors.lowPressure" class="col-3 alert alert-danger"> 
        {{ formErrors.lowPressure }} 
        </div> 
       </div> 
       </div> 
      </div> 

      <div class="form-group col-2"> 
       <label>Heart Rate (bpm)</label> 
       <input type="number" class="form-control col-6" [(ngModel)]="visitObj.heartRate" formControlName="heartRate" id="heartRate"> 
       <div *ngIf="formErrors.heartRate" class="col-3 alert alert-danger"> 
       {{ formErrors.heartRate }} 
       </div> 
      </div> 

      <div class="form-group col-2"> 
       <label>Temperature (&deg;C)</label> 
       <input type="number" class="form-control col-6" [(ngModel)]="visitObj.temperature" formControlName="temp" id="temp"> 
       <div *ngIf="formErrors.temp" class="col-3 alert alert-danger"> 
       {{ formErrors.temp }} 
       </div> 
      </div> 
      </div> 
     </div> 
     </ba-card> 
    </div> 
    </div> 

    <div class="row"> 
    <div class="col-md-12"> 
     <div> 
     <ba-card title="Did the patient undergo any of the following since last visit?" baCardClass="with-scroll"> 

      <div class="form-group row"> 
      <div class="col-6"> 
       <div class="checkbox"> 
       <ba-checkbox [(ngModel)]="visitObj.surgicalOperationProcedures" [label]="'Surgical/operation procedures'" 
          [ngModelOptions]="{standalone: true}"></ba-checkbox> 
       </div> 

       <div class="checkbox"> 
       <ba-checkbox [(ngModel)]="visitObj.dentalProcedures" [label]="'Dental procedures'" 
          [ngModelOptions]="{standalone: true}"> </ba-checkbox> 
       </div> 


       <div class="checkbox"> 
       <ba-checkbox [(ngModel)]="visitObj.physiotherapyProcedures" [label]="'Physiotherapy'" 
          [ngModelOptions]="{standalone: true}"></ba-checkbox> 
       </div> 

       <div class="checkbox"> 
       <ba-checkbox [(ngModel)]="visitObj.orthopedicProcedures" [label]="'Orthopedic procedures'" 
          [ngModelOptions]="{standalone: true}"></ba-checkbox> 
       </div> 

       <div class="form-group" 
        *ngIf="visitObj.surgicalOperationProcedures || visitObj.dentalProcedures || visitObj.physiotherapyProcedures || visitObj.orthopedicProcedures"> 
       <a class="btn btn-primary" (click)="beforeSaveValidation('/pages/patient/patientInfo/intervention')">Edit</a> 
       </div> 
      </div> 
      <div class="col-6"> 
       <div class="form-group row"> 
       <div class="checkbox col-6"> 
        <ba-checkbox [(ngModel)]="visitObj.labAssessmentsProcedures" [label]="'Lab assessments'" 
           [ngModelOptions]="{standalone: true}"></ba-checkbox> 
       </div> 
       <div class="col-6"> 
        <div *ngIf="visitObj.labAssessmentsProcedures"> 
        <span class=" edit-btn"> 
         <a class="btn btn-primary" (click)="beforeSaveValidation('/pages/patient/patientInfo/labAssessments')"> Edit </a> 
        </span> 
        </div> 

       </div> 

       <div class="col-6"> 
        <div class="checkbox"> 
        <ba-checkbox [(ngModel)]="visitObj.imagingProcedures" [label]="'Imaging procedures'" 
           [ngModelOptions]="{standalone: true}"></ba-checkbox> 
        </div> 

       </div> 
       <div class="col-6"> 
        <div *ngIf="visitObj.imagingProcedures"> 
        <span class=" edit-btn"> 
         <a class="btn btn-primary" (click)="beforeSaveValidation('/pages/patient/patientInfo/imaging')"> Edit </a> 
        </span> 
        </div> 

       </div> 
       </div> 
      </div> 


      </div> 
     </ba-card> 
     </div> 
    </div> 
    </div> 
    <div class="row"> 
    <div class="col-md-12"> 
     <div> 
     <ba-card title="Since last visit, did the patient receive any of the following:" baCardClass="with-scroll"> 
      <div class="form-group"> 
      <div class="row"> 
       <div class="col-md-6"> 
       <div class="checkbox"> 
        <ba-checkbox [(ngModel)]="visitObj.transfusionLastVisit" [label]="'Transfusions'" 
           [ngModelOptions]="{standalone: true}"></ba-checkbox> 
       </div> 
       </div> 

       <div class="col-md-6"> 
       <div *ngIf="visitObj.transfusionLastVisit"> 
        <span class=" edit-btn"> 
        <a class="btn btn-primary" (click)="beforeSaveValidation('/pages/patient/patientInfo/transfusion')"> Edit </a> 
        </span> 
       </div> 
       </div> 
      </div> 
      <div class="row"> 
       <div class="col-md-6"> 
       <div class="checkbox"> 
        <ba-checkbox [(ngModel)]="visitObj.treatmentLastVisit" [label]="'Treatment (New/Modified)'" 
           [ngModelOptions]="{standalone: true}"></ba-checkbox> 
       </div> 
       </div> 

       <div class="col-md-6"> 
       <div *ngIf="visitObj.treatmentLastVisit"> 
        <span class=" edit-btn"> 
        <a class="btn btn-primary" (click)="beforeSaveValidation('/pages/patient/patientInfo/treatment')"> Edit </a> 
        </span> 
       </div> 
       </div> 

      </div> 
      </div> 
     </ba-card> 
     </div> 
    </div> 
    </div> 

    <div class="row"> 
    <div class="col-md-12"> 
     <div> 
     <ba-card title="Since last visit, did the patient suffer from new complications/Adverse events?" 
       baCardClass="with-scroll"> 
      <div class="form-group"> 
      <div class="input-demo radio-demo row"> 

       <div class="col-md-2"> 
       <label class="radio-inline custom-radio nowrap"> 
        <input type="radio" [(ngModel)]="visitObj.complicationLastVisit" [value]="1" 
         formControlName="lastComp" > 
        <span>Yes</span> 
       </label> 
       </div> 
       <div class="col-md-2"> 
       <label class="radio-inline custom-radio nowrap"> 
        <input type="radio" [(ngModel)]="visitObj.complicationLastVisit" [value]="2" 
         formControlName="lastComp" > 
        <span>No</span> 
       </label> 
       </div> 
      </div> 
      <div class="form-group" *ngIf="visitObj.complicationLastVisit == 1"> 
       <a class="btn btn-primary" (click)="beforeSaveValidation('/pages/patient/patientInfo/complications')">Edit</a> 
      </div> 

      </div> 
     </ba-card> 
     </div> 
    </div> 
    </div> 

    <div class="row align-items-end"> 
     <button type="submit" *ngIf="createObj" [disabled]="!myForm.valid" class="btn btn-block btn-primary">Save</button> 
     <button *ngIf="!createObj" [disabled]="!myForm.valid" class="btn btn-block btn-danger">Update</button> 
    </div> 
    </form> 
</div> 

    <message-com [message]="message"></message-com> 

</ba-card> 

这里是所使用的访问模式:

import * as models from './models'; 

export class Visit { 
    id?: number; 

    visitDate?: Date; 

    weight?: number; 

    height?: number; 

    bloodPressureLow?: number; 

    bloodPressureHigh?: number; 

    heartRate?: number; 

    temperature?: number; 

    surgicalOperationProcedures?: boolean; 

    dentalProcedures?: boolean; 

    physiotherapyProcedures?: boolean; 

    orthopedicProcedures?: boolean; 

    labAssessmentsProcedures?: boolean; 

    imagingProcedures?: boolean; 

    transfusionLastVisit?: boolean; 

    treatmentLastVisit?: boolean; 

    complicationLastVisit?: number; 

    patientId?: number; 

    userId?: number; 

    constructor() { 
    this.visitDate = new Date(); 
    this.surgicalOperationProcedures = false; 
    this.dentalProcedures = false; 
    this.physiotherapyProcedures = false; 
    this.orthopedicProcedures = false; 
    this.labAssessmentsProcedures = false; 
    this.imagingProcedures = false; 
    this.transfusionLastVisit = false; 
    this.treatmentLastVisit = false; 
    } 

} 
+2

我怀疑你的模板正在尝试引用'Visit',但它被删除或从未在组件上存在 - 你的意思是'visitObj' ?.另外,确保模板中使用的任何变量被声明为“public”,而不是“private”。您可以发布您的模板以确保。 –

+0

访问是模型文件,我将它包含在帖子中。 它被用作'visitObj'的类型。 我相信,如果访问修饰符未在Typescript中赋值,则默认为公共,对吗? @LyingCake – Adel

+0

不幸的是,这超出了我对Typescript的认识。如果是我,我会尝试将'visitObj:Visit'设置为'public visitObj:Visit'',但我不能保证能够解决任何问题。祝你好运。 –

回答

0

的错误是在你的模板

<ba-card [title]="Visit" baCardClass="with-scroll"> 

这里的第一线而引起的title属性,你告诉角度来搜索属性所谓的访问,但VisitInfoComponent没有这样的属性,我想你可能想要的标题是访问,你有三个选项。

  1. 你可以卸下支架,使用title="Visit"
  2. 你可以使用引号说你需要一个字符串[title]="'Visit'"
  3. 你需要的属性在组件命名访问,我认为这是不您的案例

事情是,当您使用括号时,您告诉Angular将该属性绑定到变量而不是纯文本。

+0

谢谢@Emerson Jair。有效 – Adel