Как решить проблему «Свойство 'NRO_LIQUIDACION' не существует для типа '{}'."на процессах отладки в Angular 7 - PullRequest
0 голосов
/ 21 декабря 2018

Я готов к развертыванию в приложении Angular.В процессе отладки у меня есть эта ошибка на каждом элементе на главном векторе.Приложение работает нормально, но я имею дело с этой проблемой в каждом элементе вектора.

Это ОШИБКА:

ОШИБКА в src \ app \ wizard\ form \ stepuno \ stepuno.component.html (30,23):: Свойство 'NRO_LIQUIDACION' не существует для типа '{}'.

Мы действительно оценим здесь некоторые руки.

Это код в html component.html

    <div class="form-group col-md-6">
      <app-input  doValue="{{ WizardArr.NRO_LIQUIDACION }}" key="NRO_LIQUIDACION"  #appInput
      validateType="number" label="Número de Liquidación:" 
      placeholder="Número de Liquidación"
      (focusout)='getLiquidacion($event)'
      (keydown)="OtaxPush()"
      doMaxLength='12' doMinLength='3' ></app-input>
    </div>

А вот вектор в component.ts

класс экспорта StepunoComponent реализует OnInit {

public val_liquidacion = false;
public doClassValidation = '';
// public doMessageValidation = '';
public formReady = false;
public mal: Boolean = true;

public  WizardArr = {}
private valueDate = {};

public ListadoJuzgados: Array<Select2OptionData>;

public ListadoCargosFirmante2: Array<Select2OptionData>;

constructor(
    private dash: DashboardComponent,
    private store: State,
    public rest: RestServiceStepUno

) { }



ngOnInit() {
    // $('input[key=CARGO_FIRMANTE_1]').attr('readonly',true)
    if (sessionStorage.getItem('wizard') == '[]') {
        sessionStorage.setItem('wizard', JSON.stringify([]))
    }

    sessionStorage.setItem('wizard',
        JSON.stringify(
            this.sanitize(JSON.parse(sessionStorage.getItem('wizard')))
            )
        );
    console.log('OnInit Uno wizard: ',JSON.parse(sessionStorage.getItem('wizard')))



    const wizard = JSON.parse(sessionStorage.getItem('wizard'));
    this.ListadoJuzgados=this.getJuzgados();
    this.ListadoCargosFirmante2=this.ListadoCargoFirmante2();
    //console.log(moment().format('YYYY-MM-DD'));

    //ESTO ES PARA MANTENER LOS VALORES ENTRE CAMPOS
    wizard.forEach((element) => {
        this.WizardArr[Object.keys(element)[0]]  = Object.values(element)[0];
    });

}


public sanitize(obj){
    let lookup2 = [];
    let result = [];

    obj.reverse();

    obj.forEach((item,pos)=>{ 
        //console.log('sanitize', Object.keys(item)[0]);
        if (!lookup2.includes(Object.keys(item)[0])) {
            //console.log('splice ',item,pos);
            //result.splice(pos,1);
            result.push(item);
        }
        lookup2.push(Object.keys(item)[0]);
        console.log('result',result);

    })
    return result;

}


public validateForm(data) {}








public getValid(status) {
}

public ListadoCargoFirmante2(){

    var ArrCargos=[
    { id: '', text: 'Seleccione...', disabled: false },
    { id: 'SECRETARIO', text: 'SECRETARIO' },
    { id: 'PROSECRETARIO', text: 'PROSECRETARIO' }
    ];

    var myArrStr =JSON.stringify(ArrCargos);
    var myArrJson= JSON.parse(myArrStr);
    if(sessionStorage.getItem('wizard') != '[]'){

        const wizard = JSON.parse(sessionStorage.getItem('wizard'));
        var i=0;
        wizard.forEach(function () {
            myArrJson.forEach(function (item) {
                if (wizard[i]['CARGO_FIRMANTE_2']== item.id){
                    item.selected='selected';
                }
            });
            i++;
        });}
    return myArrJson;}

public selectedValueJuzgado(valor:any){
    this.wizardPush({'ID_JUZGADO' : valor.value});
    console.log(valor);}}}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

при инициализации WizzardArr попробуйте установить его на any type

public WizardArr: any = {}, в противном случае похоже, что вам нужно определить интерфейс, чтобы избавиться от ошибки

0 голосов
/ 22 декабря 2018

По сути, вы присвоили {} WizardArr, у которого нет никакого свойства NRO_LIQUIDACION.

Чтобы избавиться от проблемы, вы должны правильно объявить свойства WizardArr.Например:

WizardArr: { NRO_LIQUIDACION: string; }

Или присвойте значение с помощью свойства NRO_LIQUIDACION:

WizardArr = { NRO_LIQUIDACION = ''; }

Объявление WizardArr типа anyкак предложено @Uma, это также решит проблему, но вам следует избегать использования объявлений any, когда это возможно, поскольку многие преимущества машинописного текста связаны с знанием типов переменных во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...