Property 'forChild' does not exist on type 'typeof IonicModule'

Apr 10, 2017   #Ionic 

久しぶりのエラー解決記事。

Ionic 3.0.x系で現在発生する模様。

条件はgenerateコマンドで生成したものを利用する場合。

$ ionic generate page test

src/pages/testに下記4ファイルが作成される。

  • test.html
  • test.scss
  • test.ts
  • test.module.ts

以前はなかったtest.module.tsが追加された。

Ionic3からLazy loadingが利用できるようで、そのためのファイルのようだ。

https://docs.google.com/document/d/1vGokwMXPQItZmTHZQbTO4qwj_SQymFhRS_nJmiH0K3w/edit

で、そのテンプレートの生成ファイルがエラーを吐くという状態。

// src/pages/test/test.module.ts
import { NgModule } from '@angular/core';
import { IonicModule } from 'ionic-angular';
import { Test } from './test';

@NgModule({
  declarations: [
    Test,
  ],
  imports: [
    IonicModule.forChild(Test),
  ],
  exports: [
    Test
  ]
})
export class TestModule {}

ページエラー。

Typescript Error
Property 'forChild' does not exist on type 'typeof IonicModule'.
src/pages/test/test.module.ts
imports: [
  IonicModule.forChild(Test),
],

Ionic Framework: 3.0.1
Ionic Native: ^2.9.0
Ionic App Scripts: 1.3.0
Angular Core: 4.0.0
Angular Compiler CLI: 4.0.0
Node: 7.7.2
...

IonicModuleをIonicPageModuleに置き換えると解決。Lazy loading使わないなら削除しても良さそう。

import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular'; // replace here
import { Test } from './test';

@NgModule({
  declarations: [
    Test,
  ],
  imports: [
    IonicPageModule.forChild(Test), // replace here
  ],
  exports: [
    Test
  ]
})
export class TestModule {}

Ref

https://github.com/driftyco/ionic-cli/issues/2070