Не удается передать данные в службу из компонента

#angular #typescript

#angular #typescript

Вопрос:

Я пытаюсь передать параметр функции, определенной в сервисе. Параметр всегда undefined .

login.component.ts

 import { Component, OnInit } from '@angular/core';

import { AuthenticationService } from '../authentication.service';

@Component({
    selector: 'app-login',
    templateUrl: './login.component.html',
    styleUrls: ['./login.component.css'],
    providers: [AuthenticationService]
})
export class LoginComponent implements OnInit {

credentials: {
    username: '',
    password: ''
};

constructor(private _authenticationService: AuthenticationService) {}

ngOnInit() { }

login() {

    this._authenticationService.login(this.credentials).subscribe(
        response => console.log(response),
        error => console.log(error),
        () => console.log('Done.')
    );

}
  

аутентификация.service.ts

 import { Http } from '@angular/http';
import { Injectable } from '@angular/core';

@Injectable()
export class AuthenticationService {

constructor() { }

login(credentials) {

    console.log(credentials); // This is undefined

}
  

Чего мне не хватает?

Ответ №1:

Вы передаете данные идеально, но проблема в том, что вы объявили переменную credentials с типом { username: '', password: '' }; , вы не присвоили ей значение, вот почему это так undefined . : присваивает переменной тип, = присваивает значение. Это то, что вы ищете:

 credentials: any = {
    username: '',
    password: ''
};
  

Комментарии:

1. Тьфу. Я использовал : вместо = . Спасибо Стефану. Должен ли я удалить вопрос?

2. @KabirRoy Это случается, чувак, не волнуйся. Я не вижу причин удалять это, но вы можете удалить это, если хотите, на ваш выбор. 🙂