2016-12-29 3 views
2

Это не очень описательная ошибка. Я использовал массив push так же, как генерировать книги в моем проекте, и когда я делаю то же самое для клиентов, я получаю вышеуказанную ошибку. Я отправлю метод неисправного ниже, и у меня есть проект на GitHub HEREНевозможно прочитать свойство «push» неопределенного углового2, очень неописуемая ошибка

ngOnInit(){ 

     this.bookService.getAllBooks().forEach((books) => { 
      this.book = books; 
      this.availableFictionBooks = this.bookService.getAvailbleFictionBooks(books); 
      this.availableProgrammingBooks = this.bookService.getAvailbleProgrammingBooks(books); 
      this.availableNonFictionBooks = this.bookService.getAvailbleNonFictionBooks(books); 
     }); 

     this.customerService.allCustomers().filter(libraryCustomers => { 
      this.customers = this.customerService.allCustomers() 
     }); 

     this.bookService.getAllBooks().filter(books => { 
      this.allBooks = this.bookService.getAllBooks(); 
     }); 

    } 

Этот вопрос this.customerService когда я комментирую, что линия все работает отлично.

CustomerService:

generateCustomers():void { 

     let id: number = 0; 

     this.generateCustomersHelper(id++,"Drew","Jocham",this.bookGenerator()); 
     this.generateCustomersHelper(id++,"Alex","Williams",this.bookGenerator()); 
     this.generateCustomersHelper(id++,"Justin","Kavanagh",this.bookGenerator()); 
     this.generateCustomersHelper(id++,"Mike","Johnson",this.bookGenerator()); 
     this.generateCustomersHelper(id++,"Kori","Costner",this.bookGenerator()); 

    } 

    getAllCustomers(): Customer[] { 

     this.generateCustomers(); 

     return this.customers; 

    } 

    generateCustomersHelper(id: number, name: string, lastName: string, booksRented?: Array<IBook>): void { 

     let newCustomer = new Customer(); 

     newCustomer = {id, name, lastName, booksRented }; 

     this.customers.push(newCustomer); 
    } 
+2

Прокомментируйте все свои функции push, кроме первого, который попадает в цель. Если это не показывает ошибку, раскомментируйте следующую. Продолжайте, пока не выясните, в чём проблема. – dlsso

+0

Почему BookService.books? это имя класса, измените его на 'this.books' и объявите свой конструктор. –

+0

@ 5313M см. Обновление 1 – Drew1208

ответ

0

Это сообщение об ошибке на самом деле совершенно описательный. Он говорит, что в то время, когда вы выполняете строку this.customers.push(), this.customers не определен. Это связано с тем, что вы никогда не инициализируете переменную и можете быть исправлены простым добавлением = [] к строке, где она объявлена, так же, как вы уже делаете в BookService для переменной books.

+0

Мне так стыдно ... Спасибо – Drew1208

Смежные вопросы