Angular - Servis - problem z połączeniem

0

Mam problem z uruchomieniem funkcji z serwisu.
Komponent:

import { BookServicesService } from './../../services/book-services.service';
import { Component, OnInit, Injectable, NgModule } from '@angular/core';




@Component({
  selector: 'app-add-book',
  templateUrl: './add-book.component.html',
  styleUrls: ['./add-book.component.css'],

})

@NgModule({
  providers: [BookServicesService],
})
export class AddBookComponent implements OnInit {

    nextBook = new newBook();

  constructor(private _book: BookServicesService) { }

  ngOnInit() {

  }

  onSubmit() {
   console.log(this.nextBook);
   this._book.addBook(this.nextBook);

  }

}

class newBook {
  constructor (
    public title?: string,
    public author?: string,
    public content?: string
  ) {}
}


Serwis


import { Injectable } from '@angular/core';
import { Book } from '../Model/Book';

@Injectable({
  providedIn: 'root'
})
export class BookServicesService {

  booksArray = [];

  constructor(
    private book: Book
  ) { }

  addBook(e) {
    this.book.title = e.title;
    this.book.author = e.author;
    this.book.content = e.content;
    this.book.public = new Date();
    if (this.booksArray.length !== 0) {
      this.book.id = (this.booksArray[this.booksArray.length - 1].id + 1);
    } else {
      this.book.id = 1;
    }

    this.booksArray.push(this.book);
    console.log(this.book);
  }
}

Uncaught (in promise): Error: Arguments array must have arguments.

i

Cannot read property 'addBook' of undefined

Szukam informacji, ale nie mogę odbugować tego.

0

Podany przez Ciebie kod wygląda ok - wrzuć coś więcej; przede wszystkim ten fragment, gdzie odpalasz coś asynchronicznie.

Btw, naprawdę nie musisz wszędzie wykorzystywać DI - wewnątrz addBook() zrób zwyczajnie const book = new Book(); - w innym razie będziesz cały czas nadpisywał sobie poprzednie książki (this.booksArray.push(this.book); nie spowoduje sklonowania obiektu książki - wrzucona zostanie tam referencja do this.book, którą nadpiszesz przy następnym odpaleniu addBook()).

0

Nie odpalam jeszcze nic asymnchronicznie, bo nie mogę się połapać w RxJS. :) a co do wrzucania, mam tak zrobione w innych projektach i potem wrzucam to do localstorage, nie napisuje, ładnie parsuje, ale dzięki za radę :)

0

To skąd się zatem bierze Uncaught (in promise) oznaczające, że coś tam dzieje się asynchronicznie? ;-]

0

https://github.com/Wilkuuu/Biblio

tu jest cały kod. Jeżeli stosuję to nie wiem gdzie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1