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);
}
}
サービスが必要ですが、私には明らかに欠けているものがあります。
問題のスナップショット:ここ
'this.'はこれらを呼び出すときに必要なものです。関数を呼び出す場所に追加します。 'this.createBooks(" ... 'booksと他のローカル変数と同じこと –
R. Richardsの答えを見て、必要なところにサービスを注入したと思いますか? – Alex
これを' createBooks'に追加しました。 'function word'を削除してもうまくいきませんでした。関数にカーソルを移動すると、 'function newline or; 'と表示されます。 – Drew1208