LoginSignup
2
2

More than 5 years have passed since last update.

Angular4の自作サービス

Posted at

Angular4でサービスを作る方法です。
以下のコードを参考に任意の場所にサービスを作ります。
特徴的な部分はInjectableって書いてあるところですね。
他はページとかのクラスと同じ感じですね。

hero-array-service.ts
 import { Injectable } from '@angular/core';

 @Injectable()
 export class HeroesArrayService {
   getHeroesArray(searchResult): Array<Object> {
     let heroesArray = []
     // 何かコード書く
     return heroesArray;
   }
   ...
 }

利用するときは以下のような感じで使います。

search.ts
 import { Component } from '@angular/core';
 import { NavController } from 'ionic-angular';
 import overwatchJs from 'overwatch-js';
 import { SEARCH_RESULT_INITIAL_DATA } from '../../assets/data/search-result-initial-data';
 // サービスをインポート
 import { HeroesArrayService } from '../../utilities/heroes-array-service';

 @Component({
   selector: 'page-search',
   templateUrl: 'search.html',
   providers: [HeroesArrayService]
 })
 export class SearchPage {
   searchResult;
   heroesArray;

   constructor(public navCtrl: NavController, private heroesArrayService: HeroesArrayService) {
     this.searchResult = {'hoge': 'fuga'};
   }
   // テストメソッド
   serviceTest() {
     // サービスを利用して、検索結果からヒーローの配列を成形する
     this.heroesArray = this.heroesArrayService.getHeroesArray(this.searchResult);
   }
 }

ページ単位でインポートします。app.module.tsにインポートする必要はないです。
あとはコンストラクタにも書いてますね。
他と大きく違うのは、コンポーネントのprovidersに記述するところでしょうか。

providers: [HeroesArrayService]

サービスは、クラスのメソッドとして普通に使います。

this.heroesArray = this.heroesArrayService.getHeroesArray(this.searchResult);

こんなかんじ。

参考
https://angular.io/tutorial/toh-pt4

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2