Аргумент типа date нельзя присвоить параметру типа string

Я прохожу курс Angular и .net.

Я пытаюсь установить метод photourl.

Я получаю следующую ошибку\

Argument of type date is not assignable to parameter of type string

Ошибка находится в следующей строке.

this.changeMemberPhoto(this.currentUser.photoUrl);

Аргумент - это проблема

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { map } from 'rxjs/operators';
import { JwtHelperService} from '@auth0/angular-jwt';
import { environment } from 'src/environments/environment';
import { User } from '../_models/user';

@Injectable({
  providedIn: 'root'
})

export class AuthService {
  baseUrl = environment.apiUrl + 'auth/';
  jwtHelpter = new JwtHelperService();
  decodedToken: any;
  currentUser: User;
  photoUrl = new BehaviorSubject<string>('../../assets/user.png');
  currentPhotoUrl = this.photoUrl.asObservable();

  constructor(private http: HttpClient) {}


  changeMemberPhoto(photoUrl: string) {
    this.photoUrl.next(photoUrl);
  }

  login(model: any) {
    return this.http.post(this.baseUrl + 'login', model).pipe(
      map((response: any) => {
        const user = response;
        if (user) {
          localStorage.setItem('token', user.token);
          localStorage.setItem('user', JSON.stringify(user.user));
          this.decodedToken = this.jwtHelpter.decodeToken(user.token);
          this.currentUser = user.user;
          this.changeMemberPhoto(this.currentUser.photoUrl);
        }
      })
    );
  }

  register(model: any) {
    return this.http.post(this.baseUrl + 'register', model);
  }

  loggedIn() {
    const token = localStorage.getItem('token');
    return !this.jwtHelpter.isTokenExpired(token);
  }
}

Код идентичен инструкторам, поэтому я не знаю, в чем проблема.

Я включил класс User по запросу

import { Photo } from './photo';

export interface User {
    id: number;
    username: string;
    knownAs: string;
    age: number;
    gender: string;
    created: Date;
    lastActive: Date;
    photoUrl: Date;
    city: string;
    country: string;
    interests?: string;
    introduction?: string;
    lookingFor?: string;
    photos?: Photo[];
}

Я вижу ошибку. PhotoURL в пользовательском классе — это дата.

user11161143 07.03.2019 20:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
4 643
1

Ответы 1

photoUrl — это дата в вашем классе и строка в вашем методе changeMemberPhoto.

В классе User измените его на:

photoUrl: string;

Я согласен с Сирилом, ваш пользовательский класс устанавливает дату photoUrl, но другой файл использует его как строку. Возможно, измените photoUrl: Date на photoUrl: String в пользовательском классе.

bobby nicholson 07.03.2019 21:01

Я также согласен с Кириллом и Бобби. В Typescript типы важны для метода или свойства. В своем классе User вы объявляете photoUrl как тип Date. Поэтому, если вы хотите использовать это свойство или передать ему какой-либо метод, он должен быть параметром метода того же типа. Поскольку ваш шаблон именования, photoUrl должен быть строкой. Поэтому, пожалуйста, сделайте так, чтобы ваше свойство типа photoUrl было строкой, а ваш BehaviorSubject также принимал строку. Таким образом, вы не можете испускать другой тип, он также показывает вам ошибку.

Md. Abul Hasan 07.03.2019 21:56

Другие вопросы по теме