2017-06-24 22 views
0

私のプロジェクトでは、モーダルには登録フォームがあり、このフォームは角で検証されるリンクがあります。 私のプロジェクトとモーダルでng-bootstrapライブラリを使用しました。それが、モーダルのためのコンポーネントが開かれず、エラーが発生しました:角型のモーダルフォーム

ERROR Error: No provider for Router! 
    at injectionError (core.es5.js:1169) 
    at noProviderError (core.es5.js:1207) 
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._throwOrNull (core.es5.js:2649) 
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKeyDefault (core.es5.js:2688) 
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_._getByKey (core.es5.js:2620) 
    at ReflectiveInjector_.webpackJsonp.../../../core/@angular/core.es5.js.ReflectiveInjector_.get (core.es5.js:2489) 
    at resolveNgModuleDep (core.es5.js:9562) 
    at NgModuleRef_.webpackJsonp.../../../core/@angular/core.es5.js.NgModuleRef_.get (core.es5.js:10644) 
    at resolveDep (core.es5.js:11147) 
    at createClass (core.es5.js:11011) 

app.component.html:

<ng-template #signup let-c="close" let-d="dismiss"> 
     <div class="modal-header"> 
      <button type="button" class="close" aria-label="Close" (click)="d('Cross click')"> 
       <span aria-hidden="true">&times;</span> 
      </button> 
     </div> 
     <div class="modal-body"> 
      <div class="row"> 
       <div class="col-6"></div> 
       <div class="col-5 mt-5 mb-2"> 
        <div class="wrapper-left-content"> 
         <app-register-form></app-register-form> 
        </div> 
       </div> 
      </div> 
     </div> 
    </ng-template> 

register.componをエンティティ:

import { Component, Injectable, OnInit } from '@angular/core'; 
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms'; 
import { Router } from '@angular/router'; 
import { AuthService } from '../services/auth.services'; 
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; 

@Component({ 
    selector: 'app-register-form', 
    templateUrl: '../templates/register.component.html' 
}) 
@Injectable() 
export class RegisterComponent implements OnInit { 
    private errorMessage: any ; 
    closeResult: string; 

    FirstName = new FormControl('', [ 
     Validators.required 
    ]); 
    LastName = new FormControl('', [ 
     Validators.required 
    ]); 

    Password = new FormControl('', [ 
     Validators.required, 
     Validators.minLength(6) 
    ]); 
    Password_Confirm = new FormControl('', [ 
     Validators.required 
    ]); 

どうすれば解決できますか?

私はこのコードでモーダルを起動します。

<div class="user-info"> 
    <div class="user-login-link"> 
     <a href="#" data-toggle="modal" data-target="#signup" (click)="open(signup)"></a> 
    </div> 
    <div class="user-login-link"> 
     <a href="#" data-toggle="modal" data-target="#signin" (click)="open(signin)"></a> 
    </div> 
</div> 
+0

Angularの '* ngIf'ディレクティブを使って表示/非表示を試みましたか? – Abrar

+0

これはモーダルやng-bootstrapとは関係がないと思います。どこかでルータサービスを使用しているようですが、ルートNgModuleにRouterModuleをインポートしていません。 –

+0

私の質問を編集します – mosi

答えて

0

No provider for Routerは、あなたがこの定義が欠落していることを意味:

//For the app.module.ts 
@NgModule({ 
    imports: [RouterModule.forRoot(...)] 

//For other modules 
@NgModule({ 
    imports: [RouterModule.forChild(...)], 

はまた、あなたはその最新バージョンを使用していることを確認してください。私は第三者コンポーネントを意味します。 試してみることができるhttps://github.com/valor-software/ngx-bootstrapのような他の良いコンポーネントがあります。

+0

あなたの答えが誤解を招くので、私はダウン投票しています。質問はhttps://ng-bootstrap.github.io/#/components/modalで、 'ngx-bootstrap'とは何も関係ありません。どのような場合でも名前を変更する必要はありません。間違った情報を削除してください。投票を削除できます。 –

関連する問題