Почему я получаю это сообщение об ошибке при попытке использовать функцию map () в проекте Angular? Не удается найти имя "карта" - PullRequest
0 голосов
/ 09 июля 2020

Я работаю над проектом Angular и обнаружил следующую проблему в этом классе:

import { Component, OnInit } from '@angular/core';
import {SidebarModule} from 'primeng/sidebar';
import { AngularFireAuth } from '@angular/fire/auth';
import { Observable } from 'rxjs';

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

  display;

  isLoggedIn$: Observable<boolean>;
  isLoggedOut$:Observable<boolean>;
  pictureUrl$: Observable<string>;


  constructor(private afAuth: AngularFireAuth) { }

  ngOnInit(): void {
    this.afAuth.authState.subscribe(user => console.log(user));

    this.isLoggedIn$ = this.afAuth.authState.pipe(map(user => !!user));

    this.isLoggedOut$ = this.isLoggedIn$.pipe(map(loggedIn => !loggedIn));

    this.pictureUrl$ =
      this.afAuth.authState.pipe(map(user => user ? user.photoURL: null));
  }


  logout() {
    this.afAuth.auth.signOut();
  }

}

Проблема появляется при вызове map () этих 3 строки:

this.isLoggedIn$ = this.afAuth.authState.pipe(map(user => !!user));

this.isLoggedOut$ = this.isLoggedIn$.pipe(map(loggedIn => !loggedIn));

this.pictureUrl$ =
  this.afAuth.authState.pipe(map(user => user ? user.photoURL: null));

IDE выдает мне это сообщение об ошибке:

Cannot find name 'map'. Did you mean 'Map'?ts(2552)
lib.es2015.collection.d.ts(36, 13): 'Map' is declared here.

Пытаюсь скомпилировать я получаю это сообщение об ошибке:

ERROR in src/app/header/header.component.ts:25:51 - error TS2552: Cannot find name 'map'. Did you mean 'Map'?

25     this.isLoggedIn$ = this.afAuth.authState.pipe(map(user => !!user));
                                                     ~~~

  node_modules/typescript/lib/lib.es2015.collection.d.ts:36:13
    36 declare var Map: MapConstructor;
                   ~~~
    'Map' is declared here.
src/app/header/header.component.ts:27:47 - error TS2552: Cannot find name 'map'. Did you mean 'Map'?

27     this.isLoggedOut$ = this.isLoggedIn$.pipe(map(loggedIn => !loggedIn));
                                                 ~~~

  node_modules/typescript/lib/lib.es2015.collection.d.ts:36:13
    36 declare var Map: MapConstructor;
                   ~~~
    'Map' is declared here.
src/app/header/header.component.ts:30:34 - error TS2552: Cannot find name 'map'. Did you mean 'Map'?

30       this.afAuth.authState.pipe(map(user => user ? user.photoURL: null));
                                    ~~~

  node_modules/typescript/lib/lib.es2015.collection.d.ts:36:13
    36 declare var Map: MapConstructor;
                   ~~~
    'Map' is declared here.

Почему? Что случилось? Что мне не хватает? Как я могу попробовать исправить этот код?

1 Ответ

2 голосов
/ 09 июля 2020

Вам необходимо импортировать Rx JS map оператор: import {map} from 'rxjs/operators';

...