2016-12-22 6 views
0

typescriptでいくつかのメソッドを作成しましたが、それらをAngular 2に移動したので使用できないようです。Angular 2サービスでtypescriptメソッドを作成する

私も仕事を削除しましたfunctionしかし、それもうまくいきませんでした。以下にコードを示します:

import {Injectable} from '@angular/core'; 

@Injectable() 
export class BooksService { 

let books: Array<IBook> = []; 
let idNumber = 0; 


function ID(): number{ 
    return idNumber++; 
} 


function generateBooks(): void { 

    createBooks("Programming for dummies","Drew Jocham",Category.Programming, false); 
    createBooks("Love story I won't read","Justin C",Category.Fiction, true); 
    createBooks("Shooting for dummies","Autin Powers",Category.nonFiction, true); 
    createBooks("Master Management","Dick Tracy",Category.nonFiction, false); 
    createBooks("Advanced C++","Kevin Jocham",Category.Programming, true); 
    createBooks("How to eat pizza","Ted",Category.nonFiction, true); 

} 

function clearBooks():void{ 
    books = []; 
} 

function createBooks(name:string,author:string,category:Category,isAvailable:boolean): void{ 

    let newBook:IBook = {id:ID(),name:name,author:author,category:category,isAvailable:isAvailable}; 

    books.push(newBook); 
} 

function getAvailbleFictionBooks(books): string[] { 

    clearBooks(); 
    generateBooks(); 

    let availableBooks: Array<string> = []; 

    for(let currentBook of books){ 

     if(currentBook.isAvailable && currentBook.catergory === Category.Fiction){ 

      availableBooks.push(currentBook); 
     } 
    } 

    return availableBooks; 
} 

function getAvailbleProgrammingBooks(books): string[]{ 

    clearBooks(); 
    generateBooks(); 

    let availableBooks: Array<string>=[]; 

    for(let currentBook of books){ 

     if(currentBook.isAvailable && currentBook.catergory === Category.Programming){ 
      availableBooks.push(currentBook); 
     } 
    } 

    return availableBooks; 
} 

function getAvailbleNonFictionBooks(books): string[] { 

    clearBooks(); 
    generateBooks(); 

    let availableBooks: Array<string>=[]; 

    for(let currentBook of books){ 

     if(currentBook.isAvailable && currentBook.catergory === Category.nonFiction){ 
      availableBooks.push(currentBook); 
     } 
    } 

    return availableBooks; 
} 

function getAllBooks(): Array<IBook> { 

    clearBooks(); 
    generateBooks(); 

    return books; 
} 

function checkoutBook(id:number): boolean { 

    let bookCollection = getAllBooks; 

    for(let book of bookCollection()){ 

    if(book.id === id && book.isAvailable){ 
     let index = books.indexOf(book); 
     delete books[index]; 
     return true; 
    } 
    } 

    return false; 
} 

function checkInBook(book):void{ 
    books.push(book); 
} 

const allBooks = getAllBooks(); 

const availbleFictionBooks = allBooks.filter(book => getAvailbleNonFictionBooks(book)); 
const availbleProgrammingBooks = allBooks.filter(book => getAvailbleNonFictionBooks(book)); 
const availbleNonFictionBooks = allBooks.filter(book => getAvailbleNonFictionBooks(book)); 

for(let books of availbleFictionBooks){ 
    console.log(books); 
} 

} 

サービスが必要ですが、私には明らかに欠けているものがあります。

問題のスナップショット:ここ

enter image description here

+1

'this.'はこれらを呼び出すときに必要なものです。関数を呼び出す場所に追加します。 'this.createBooks(" ... 'booksと他のローカル変数と同じこと –

+0

R. Richardsの答えを見て、必要なところにサービスを注入したと思いますか? – Alex

+0

これを' createBooks'に追加しました。 'function word'を削除してもうまくいきませんでした。関数にカーソルを移動すると、 'function newline or; 'と表示されます。 – Drew1208

答えて

0

は、私はすぐに気づいたと固定エラーです。

まず、インポートの下線パスが表示されます。これは、正しいパスがないことを意味します。

あなたには、このようなものや構文エラーがたくさんありました。私はのいくつかをコードのコメントとしてマークしました。あなたはまずAngular 2を学び始めてください。Angularこれはサービスに関するチュートリアルです:Tour of heroesこれらのチュートリアルは本当に役立ちます! :)あなたのコードには、多少異なることがありますが、知る必要があることはすべてチュートリアルにあります。 :)

import { Injectable } from '@angular/core'; 
import { Category } from 'yourPath'; // add the correct path here! 
import { IBook } from 'yourPath'; // add the correct path here! 

@Injectable() 
export class BooksService { 

    books: Array<IBook> = []; 
    idNumber = 0; 


    ID(): number { 
     return this.idNumber++; // this was missing! 
    } 

    generateBooks(): void { // this missing on all! 
     this.createBooks("Programming for dummies", "Drew Jocham", Category.Programming, false); 
     this.createBooks("Love story I won't read", "Justin C", Category.Fiction, true); 
     this.createBooks("Shooting for dummies", "Autin Powers", Category.nonFiction, true); 
     this.createBooks("Master Management", "Dick Tracy", Category.nonFiction, false); 
     this.createBooks("Advanced C++", "Kevin Jocham", Category.Programming, true); 
     this.createBooks("How to eat pizza", "Ted", Category.nonFiction, true); 
    } 

    clearBooks(): void { 
     this.books = []; // this was missing! 
    } 

    createBooks(name: string, author: string, category: Category, isAvailable: boolean): void { 
     let newBook: IBook = { id: this.ID(), name: name, author: author, category: category, isAvailable: isAvailable }; 
     this.books.push(newBook); // this was missing! 
    } 

    getAvailbleFictionBooks(books): string[] { 
     this.clearBooks(); // this was missing! 
     this.generateBooks(); // this was missing! 

     let availableBooks: Array<string> = []; 

     for (let currentBook of books) { 
      if (currentBook.isAvailable && currentBook.catergory === Category.Fiction) { 
       availableBooks.push(currentBook); 
      } 
     } 
     return availableBooks; 
    } 

    getAvailbleProgrammingBooks(books): string[] { 
     this.clearBooks(); // this was missing! 
     this.generateBooks(); // this was missing! 

     let availableBooks: Array<string> = []; 
     for (let currentBook of books) { 
      if (currentBook.isAvailable && currentBook.catergory === Category.Programming) { 
       availableBooks.push(currentBook); 
      } 
     } 
     return availableBooks; 
    } 

    getAvailbleNonFictionBooks(books): string[] { 

     this.clearBooks(); // this was missing! 
     this.generateBooks(); // this was missing! 

     let availableBooks: Array<string> = []; 

     for (let currentBook of books) { 
      if (currentBook.isAvailable && currentBook.catergory === Category.nonFiction) { 
       availableBooks.push(currentBook); 
      } 
     } 
     return availableBooks; 
    } 

    getAllBooks(): Array<IBook> { 
     this.clearBooks(); 
     this.generateBooks(); 
     return this.books; 
    } 

    checkoutBook(id: number): boolean { 
     let bookCollection = this.getAllBooks(); //error here!! 
     for (let book of bookCollection) { // You had an exta (here 
      if (book.id === id && book.isAvailable) { 
       let index = this.books.indexOf(book); 
       // delete books[index]; WRONG! 
       this.books.splice(index, 1); // CORRECT 
       return true; 
      } 
     } 
     return false; 
    } 

    checkInBook(book): void { 
     this.books.push(book); 
    } 
} 
関連する問題