ionicのthis.nav.Push
に問題があると思われます。ログイン/登録ページを実行しましたが、ログインするとこのエラーメッセージが表示されます。 login.tsとhome.ts(メインページ)からコードを追加する必要がありますか?
ランタイムエラー
アンキャッチ(約束):無効なリンク:HomePage
エラー:キャッチされません(約束):無効なリンク:dのHomePage( http:// localhost:8100/build/polyfills.js:3:3991 )at l( http:/ /localhost:8100/build/polyfills.js:3:3244 )Object.rejectで( http:// localhost:8100/build/polyfills.js:3:26 )NavControllerBaseで._fireError( http:// localhost:8100/build/main.js:45465:16 )at NavControllerBase._failed( http:// localhost:8100/build/main.js :45453:14 )at http:// localhost:8100/build/main.js:45508:59 at t.invoke( http:// localhost:8100/build.polyfills.js:3:11562 )Object.onInvokeで( http:// localhost:8100/build/main.js:4622:37 )t.invokeで(- http:// localhost:8100/build/polyfills.js:3:11502 )n.run( http:// localhost:8100/build/polyfills.js:3:6468 )at http:// localhost:8100/build/polyfills.js:3:3767 at t.invokeTask(- http:// localhost:8100/build/polyfills.js :3:12256 )Object.onInvokeTaskで( http:// localhost:8100/build/main.js:4613:37 )t.invokeTaskで( http://localhost:8 100/build/polyfills.js:3:12177 )n.runTask( http:// localhost:8100/build/polyfills.js:3:715 )
@edit:アプリにログインするときに問題が発生します。ログインに対するコードの回答者です。
login.ts
public login() {
this.showLoading()
this.auth.login(this.registerCredentials).subscribe(allowed => {
if (allowed) {
this.nav.Push('HomePage');
} else {
this.showError("Access Denied");
}
},
error => {
this.showError(error);
});
}
auth-service.ts(ここに私のロインを実行するパブリック関数と、ログインで入力する必要があるパスと電子メールがある場所)
public login(credentials) {
if (credentials.email === null || credentials.password === null) {
return Observable.throw("Please insert credentials");
} else {
return Observable.create(observer => {
// At this point make a request to your backend to make a real check!
let access = (credentials.password === "pass" && credentials.email === "email");
this.currentUser = new User('Simon', '[email protected]');
observer.next(access);
observer.complete();
});
}
}
このコードが間違っている理由はわかりません。私のアプリはhome.tsで、クラスはHomePageです。
「@Component」の前に@IonicPage()を追加し、次のように「IonicPage」をインポートする必要があります。import {NavController, IonicPage} from 'ionic-angular';
次に、ホームページのモジュールを作成する必要があります。つまり、ホームディレクトリに、次の内容のhome.module.tsを作成します。
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { HomePage } from './home';
@NgModule({
declarations: [
HomePage
],
imports: [
IonicPageModule.forChild(HomePage),
],
exports: [
HomePage
]
})
export class HomePageModule {}
プロジェクトをリロードします
コードの唯一の問題は、this.nav.Push('HomePage');
を書くとき、ページを呼び出すときに''引用符を削除して、このように書くことです。
this.nav.Push(HomePage);
引用符なし。
上の答えはionic2に対するものであり、ionic3には、次のように呼び出す遅延読み込みがあります
this.nav.Push('HomePage');
ログイン例をコピーしました。エラーも同様です。
HomePageのチェックポイント:(1)home.module.tsが(2)home.tsの '@Component'の前に@IonicPage()をチェックする(2)app.module.tsの宣言/エントリコンポーネントからHomePageを削除するオープンエラー
サーバーを再起動すると、チャームのように動作します。修正に数時間かかりました。@IonicPage()
で問題が解決しない場合は、サーバーを再起動してください。すなわちionic serve
。ハッピーコーディング!!!
たとえば、tsファイルの@componentの前に@IonicPage()を追加します。
@ IonicPage() @Component({selector: 'page-wall'、templateUrl: 'wall.html'、})