2017-06-24 5 views
0

nehme ich einen Link in meinem Projekt, das ein modaler öffnen enthält Register Form und diese Form von Winkel bestätigen werden, benutzte ich ng-bootstrap Bibliothek in meinem Projekt und in modal I definiert sind, eine Richtlinie und dann ein schreibenModal Form in Angular 4

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 Komponente für sie aber die modal nicht und ein Fehler ist aufgetreten geöffnet werden ent.ts:

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 
    ]); 

Wie kann ich es gelöst?

rufe ich durch diesen Code modal:

<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

Haben Sie versucht, Angulars '* ngIf'-Anweisung anzuzeigen/zu verbergen? – Abrar

+0

Ich glaube nicht, dass dies etwas mit modals oder ng-bootstrap zu tun hat. Sie scheinen den Router-Dienst irgendwo (wo) zu verwenden, haben aber das RouterModul nicht in Ihr root-NgModul importiert. –

+0

Ich bearbeite meine Frage – mosi

Antwort

0

No provider for Router bedeutet, dass Sie diese Definition fehlen:

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

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

auch sicher, dass Sie die neueste Version verwenden. Ich meine die 3rd Party Komponente. Es gibt andere gute Komponenten wie https://github.com/valor-software/ngx-bootstrap, die Sie auch versuchen können.

+0

Ich bin down-voting, da Ihre Antwort irreführend ist: Die Frage ist über https://ng-bootstrap.github.io/#/components/modal, was _nothing_ mit 'ngx-bootstrap' zu tun hat - das sind 2 getrennt Projekte und auf keinen Fall ein Umbenennen! Bitte entferne die falschen Info-Infos und ich kann down-vote entfernen. –