2017-06-30 2 views
1

Ich mache eine http-Abrufanforderung, aber die mitgelieferten Parameter stimmen mit keiner Signatur des Aufrufziels überein. Wie korrigiere ich das?Mitgelieferte Parameter stimmen mit keiner Signatur des Aufrufziels überein - Typescript - Header-Komponente

ERROR in D:/xampp/htdocs/angular2/src/$$ _ gendir/app/header/header.component.ngfactory.ts (17017,35): Geliefert Parametern entsprechen keine Unterschrift von Rufziel .

Fehler in D:/xampp/htdocs/angular2/src/$$ _ gendir/app/header/header.component.ngfactory.ts (17017,35): Die mitgelieferten Parameter stimmen nicht mit einer Signatur des Aufrufziels überein.

meine Header-Komponente

import { Component, Renderer } from '@angular/core'; 
import { Title, DOCUMENT } from '@angular/platform-browser'; 
import { CountriesService } from '../services/countries.services'; 
import { Router, ActivatedRoute, Params } from '@angular/router'; 
import { AuthenticationService } from '../services/authentication.service'; 

import { FacebookService, InitParams, LoginResponse } from 'ngx-facebook'; 


@Component({ 
    moduleId: module.id, 
    selector: 'app-header', 
    templateUrl: 'header.component.html', 
    styleUrls: ['../app.component.css'], 
}) 
export class HeaderComponent { 


    searchResultData: any = {}; 
    SearchParams: any = {}; 
    SearchResultChk: any = {}; 
    loginfailedmsg = false; 
    registerfailedmsg = false; 
    registersuccessmsg = false; 
    pswdsuccessmsg = false; 
    pswdfailedmsg = false; 

    countrieslist: any = {}; 
    model: any = {}; 

    loading = false; 
    returnUrl: string; 
    responseData: any = {}; 
    loginStatus = 0; 
    loginsuccessmsg = false; 
    Forgotpasswordcont = false; 
    LoginwithEmail = false; 
    registerwithemail = false; 

    public visible = false; 
    public visibleAnimate = false; 

    registerformcont = false; 
    registerActive = true; 
    loginactive = false; 
    currentUser: any = {}; 
    PopupTitle = ''; 
    callBackfunc = ''; 
    responseNameCheck: any = {}; 
    LoginOptions: any = {}; 
    response: any = {}; 
    FacebookResponse: any = {}; 

    constructor(title: Title, 
       private countriesService: CountriesService, 
       private Router: Router, 
       private authenticationService: AuthenticationService, 
       private fb: FacebookService) { 

     let initParams: InitParams = { 
      appId: '************', 
      cookie: true, 
      xfbml: true, 
      version: 'v2.8' 
     }; 

     fb.init(initParams); 

     Router.events.subscribe((val) => { 
      this.searchResultCont = false; 
      this.showStyle = false; 
     }); 
    } 

    fbloginAuth(FacebookResponseparam) { 
     this.authenticationService.facebookloginregister(FacebookResponseparam) 
      .subscribe(
       data => { 
        this.responseData = data; 
        this.loading = false; 

        if (this.responseData.status == 1) { 

         this.registersuccessmsg = true; 
         // this.loginfailedmsg= false; 
         this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 
         if (this.currentUser) { 
          this.loginStatus = this.currentUser.status; 
         } 
         setTimeout(() => this.visible = false, 2000); 

        } else { 
         this.registersuccessmsg = false; 
         this.registerfailedmsg = true; 
        } 
       }, 
       error => { 
        this.loginfailedmsg = true; 
        this.loading = false; 
       }); 
    } 


    loginWithFacebook(): void { 

     this.fb.login() 
      .then((response: LoginResponse) => { 
       this.response = response; 
       console.log(response); 

       this.fb.api('/me?fields=first_name, last_name, picture, email', 'get', {'accesstoken': this.response.accessToken}) 
        .then(res => { 

         if (res.id) { 
          this.FacebookResponse = res; 
          this.fbloginAuth(this.FacebookResponse); 

         } else { 
          this.registersuccessmsg = false; 
          this.registerfailedmsg = true; 
         } 
        }) 
        .catch(e => console.log(e)); 

      }) 
      .catch((error: any) => console.error(error)); 

    } 


    ngOnInit() { 

     this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 
     if (this.currentUser) { 
      this.loginStatus = this.currentUser.status; 
     } 
    } 


    forgotpassword() { 
     this.loading = true; 
     this.authenticationService.forgotpassword(this.model.emailid) 
      .subscribe(
       data => { 

        this.responseData = data; 
        this.loading = false; 
        this.pswdsuccessmsg = false; 
        this.pswdfailedmsg = false; 

        if (this.responseData.status) { 
         this.pswdsuccessmsg = true; 
         this.PopupTitle = 'Email sent'; 
         this.Forgotpasswordcont = true; 
         this.callBackfunc = ''; 

        } else { 
         this.pswdfailedmsg = true; 
        } 
       }, 
       error => { 
        this.loginfailedmsg = true; 
        this.loading = false; 
       }); 
    } 

    login() { 

     this.loading = true; 
     this.authenticationService.login(this.model.username, this.model.lpassword) 
      .subscribe(
       data => { 

        this.responseData = data; 
        this.loading = false; 

        if (this.responseData.status) { 

         this.loginsuccessmsg = true; 
         this.loginfailedmsg = false; 
         this.currentUser = JSON.parse(localStorage.getItem('currentUser')); 
         if (this.currentUser) { 
          this.loginStatus = this.currentUser.status; 
         } 
         setTimeout(() => this.visible = false, 2000); 

        } else { 
         this.loginsuccessmsg = false; 
         this.loginfailedmsg = true; 
        } 
       }, 
       error => { 
        this.loginfailedmsg = true; 
        this.loading = false; 
       }); 
    } 

    logout() { 
     if (confirm('Are you sure you want to logout?')) { 
      this.loginStatus = 0; 
      localStorage.removeItem('currentUser'); 
     } 
    } 


    register() { 

     this.loading = true; 

     this.authenticationService.usernamecheck(this.model.username) 
      .subscribe(
       data => { 
        this.responseNameCheck = data; 
        // console.log(this.responseNameCheck); 
       }); 
     if (this.responseNameCheck.status == 0) { 
      this.registerwithemail = true; 
      this.callBackfunc = 'registerwithemail'; 
      this.loading = false; 
      return false; 
     } else { 
      this.authenticationService.register(this.model) 
       .subscribe(
        data => { 
         this.responseData = data; 
         this.loading = false; 

         if (this.responseData.status) { 
          this.model = ''; 
          this.registerfailedmsg = false; 
          this.registersuccessmsg = true; 
          // setTimeout(() => this.visible = false, 2000); 
          this.showmodel('loginwithemail'); 

         } else { 
          this.callBackfunc = 'registerwithemail'; 
          // this.stepone= true; 
          this.registersuccessmsg = false; 
          this.registerfailedmsg = true; 
         } 

        }, 
        error => { 
         this.loginfailedmsg = true; 
         this.loading = false; 
        }); 
     } 
    } 
} 

authentication.service.ts

import { Injectable } from '@angular/core'; 
import { Http, Headers, Response } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map' 
import { environment } from 'environments/environment'; 


@Injectable() 
export class AuthenticationService { 
    constructor(private http: Http) { } 

    private LoginUrl = environment.ApiEndPointLoginURL; 
    private RegisterURL = environment.ApiEndPointRegisterURL; 
    private ForgotPswdURL = environment.ApiEndPointForgotPswdURL; 
    private UsernameCheckURL = environment.ApiEndPointUsernameChkURL; 
    private FacebookURL = environment.ApiEndPointFacebookURL; 


    forgotpassword(email: any):Observable<Response>{ 
     let headers = new Headers(); 
     headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
     headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,OPTIONS'); 
     headers.append('Access-Control-Allow-Origin', '*'); 

     //let params = "emailid="+email; 
     let params = { 
      emailid: email 
      } 

     return this.http.post(this.ForgotPswdURL, params,{headers: headers}) 
       .map((response: Response) => { 
        let user = response.json();  
        return user; 
       }); 
    } 


    usernamecheck(username: any):Observable<Response>{ 
     let headers = new Headers(); 
     headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
     headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,OPTIONS'); 
     headers.append('Access-Control-Allow-Origin', '*'); 

    // let params = "username="+username; 
     let params = { 
      username: username 
     } 

     return this.http.post(this.UsernameCheckURL, params,{headers: headers}) 
       .map((response: Response) => { 
        let user = response.json();  
        return user; 
       }); 
    } 

    facebookloginregister(userDetails: any){ 
     let headers = new Headers(); 
     headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
     headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,OPTIONS'); 
     headers.append('Access-Control-Allow-Origin', '*'); 

    /* let params = "name="+userDetails.first_name+" "+userDetails.last_name+"&email="+userDetails.email+ 
     "&imgurl="+userDetails.picture.data.url+"&fb_id="+userDetails.id;*/ 

     let params = { 
      name: userDetails.first_name+" "+userDetails.last_name, 
      email:userDetails.email, 
      imgurl:userDetails.picture.data.url, 
      fb_id:userDetails.id 
     } 

     return this.http.post(this.FacebookURL, params,{headers: headers}) 
       .map((response: Response) => { 
        let user = response.json();  

        if (user && user.status) {      
         localStorage.setItem('currentUser', JSON.stringify(user)); 
         return user; 
        }else{ 
         return user; 
        } 

       }); 
    } 




    login(username: any, password: any) { 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
    headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,OPTIONS'); 
    headers.append('Access-Control-Allow-Origin', '*'); 

    // let params = "email="+username+"&password="+password; 
    let params = { 
      email: username, 
      password:password 
     } 

    //console.log(params); 

    return this.http.post(this.LoginUrl, params,{headers: headers}) 
      .map((response: Response) => { 

       let user = response.json();  

       if (user && user.status) {      
        localStorage.setItem('currentUser', JSON.stringify(user)); 
        return user; 
       }else{ 
        return user; 
       } 
      }); 
    } 



    register(user: any){ 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
    headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,OPTIONS'); 
    headers.append('Access-Control-Allow-Origin', '*'); 

    //let params = "name="+ user.firstName+"&email="+ user.email+" &password="+user.password+"&country="+user.country;  

    let params = { 
      name: user.firstName, 
      email:user.email, 
      password:user.password, 
      country:user.country 
     } 
    return this.http.post(this.RegisterURL, params,{headers: headers}) 
      .map((response: Response) => { 
       let user = response.json();  
       return user; 
      }); 
    } 

} 
+0

Bitte posten Sie Ihre 'header.component.html' – yurzui

+0

@yurzui, es ist sehr lang. Datei – vel

+0

Sie haben Funktionsaufruf in Vorlage, die nicht mit Methode in Ihrer TS-Datei übereinstimmt – yurzui

Antwort

1

.post() erwartet Sie 3 Parameter an: url, body, requestOptions.

So eine richtige cal wäre: http.post(url, body, requestOptions)

Nachdem dies gesagt ist, Ihr params(Körperparameter) ein String ist und kein Objekt!

let params = "emailid="+email; 

Ändern es zu einem Objekt:

let params = { 
    emailid: email 
} 

Überprüfen Sie alle Ihre params aber sie sind alle als string, müssen Object sein.

Update:

Letzte Funktion des Codes wird wiederholt. Sie haben 2 register Funktionen. Und auch 1 extra }.

dies von AuthenticationService am Ende Löschen:

register(user: any):Observable<Response> { 
     let headers = new Headers(); 
     headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
     headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,OPTIONS'); 
     headers.append('Access-Control-Allow-Origin', '*'); 

     let params = "name="+ user.firstName+"&email="+ user.email+"&password="+user.password+"&country="+user.country; 

     return this.http.post(this.RegisterURL, params,{headers: headers}) 
     .map((response: Response) => { 
     let user = response.json(); 
     return user; 
     }); 
    } 

} 

Update 2:

alle Anrufe in Observables Transform, so wird es einen Rückgabetyp haben.

Beispiel:

facebookloginregister(userDetails: any): Observable<Response> { ... } 
+0

immer noch den gleichen Fehler. – vel

+0

Ich habe meinen fraglichen Teil authentication.service.ts aktualisiert. – vel

+0

@vel I aktualisiert, meine Antwort, festgestellt, dass Sie Code wiederholt hatten. Überprüfen Sie das und sehen Sie, ob es die Ursache Ihrer Probleme sein kann. – SrAxi

Verwandte Themen