Неперехваченная ошибка типа: не удается прочитать свойство «элемент» неопределенного значения при нажатии кнопки входа в систему

#javascript #angular #ionic2

#javascript #угловой #ionic2

Вопрос:

Я получаю эту ошибку

Неперехваченная ошибка типа: не удается прочитать свойство «элемент» неопределенного

когда я нажимаю кнопку входа в систему в моем приложении ionic2 и angular2. Я попытался найти переменную, которая не инициализируется или не функционирует, но я вообще не нашел.

это функция входа в систему

 import { Component } from '@angular/core';
import { NavController,ViewController } from 'ionic-angular';
import { Storage} from '@ionic/storage';

//components
import { MyService } from '../../providers/my-service';
import { AdminPage } from '../admin/admin';

/*
  Generated class for the ModalPage page.

  See http://ionicframework.com/docs/v2/components/#navigation for more info on
  Ionic pages and navigation.
*/
@Component({
  selector: 'page-modal-page',
  templateUrl: 'modal-page.html',
  providers:[MyService]
})
export class ModalPage {

  data:any;
  public local: Storage;
  private mydata:any;

  constructor(public navCtrl: NavController,private viewCtrl: ViewController,private service:MyService) {
    this.data={};
    this.data.username="";
    this.data.password="";
    this.local=new Storage();

  }

  login(){
    let username = this.data.username;
    let password = this.data.password;
    let data  = JSON.stringify({username, password});
    this.service.postLogin(data)
        .subscribe(data => {
          this.mydata = data;
          this.local.set('username', this.mydata[0].name);
          this.local.set('token', this.mydata[0].token);
          this.viewCtrl.dismiss();
        }, error =>{
          console.log(error);
        })
  }
  dismiss(){
    this.viewCtrl.dismiss();
  }

}
  

это страница my-service

     import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { Storage} from '@ionic/storage';
import {NavController} from "ionic-angular";

import { AdminPage } from '../pages/admin/admin';
/*
  Generated class for the MyService provider.

  See https://angular.io/docs/ts/latest/guide/dependency-injection.html
  for more info on providers and Angular 2 DI.
*/
@Injectable()
export class MyService {

  public local:Storage;
   private mydata:any;
    public getsession: any;
  constructor(public http: Http,private local: Storage,private navCtrl:NavController) {
    this.local=new Storage();

  }
  postLogin(data){
      let link = "http://adirzoari.16mb.com/newapi.php";
      return this.http.post(link,data)
          .map(res => res.json())
  }
  checkToken(){
      return this.getsession =this.local.get('token');

  }
}
  

это моя ошибка

когда я нажимаю на error-content-script.js

отображается ошибка

Комментарии:

1. Где вы получаете ошибку? до postlogin или после получения ответа?

2. Кстати, ошибка не в этом файле…

3. после получения ответа.

4. @SteevePitis так откуда эта ошибка?

5. lol без вашего кода я не могу ответить на этот вопрос: p но ошибка где-то, что вы вызываете **object**.element

Ответ №1:

Похоже, вы получаете доступ к элементу поля somewhere in the template modal-page.html `. Например,

 {{ something.element }}
  

Если это так, попробуйте {{ something?.element }} вместо этого.

Это проверяет something , существует ли (не null или undefined), прежде чем обращаться к полю.

Комментарии:

1. У меня нет something.element : посмотрите на мой пост снова, я его редактирую

2. На вашем последнем скриншоте показано имя функции ...ByFieldId(fieldId) . Сделайте Pretty-print ** (**{ } под кодом) исходного файла вокруг этой ошибки и передайте ее нам. Или, может быть, вы знаете эту функцию и почему она возвращает undefined

3. Zhytekvich — у меня вообще нет этой функции в моей программе. у меня нет этого файла content-script.js .

4. что вы имеете в виду под pretty print?

5. на вашем скриншоте есть фигурные скобки под исходным кодом, когда вы нажимаете на него, он «минимизирует» код. это называется «pretty-print». Кроме того, это слово написано над исходным кодом.