Невозможно использовать оператор карты rxjs в проекте Angular - PullRequest
0 голосов
/ 27 ноября 2018

Я пытался использовать оператор карты rxjs в своем проекте Angular, но возникает ошибка ниже

ERROR in src/app/core/service/session.service.ts(88,9): error TS2552: Cannot find name 'map'. Did you mean 'Map'?

Я что-то упускаю?

Angular CLI 7.0.4

Узел 10.13.0

rxjs 6.3.3

машинописный текст 3.1.6

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';// This is where I import map operator
import { SessionService } from '../service/session.service';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {

  constructor(private session: SessionService,
    private router: Router) {
  }

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> |boolean {
    return this.session
  .checkLoginState()//Returns an Observable of Session
  .pipe(
    map(session => {
      if (!session.login) {
        this.router.navigate(['']);
      }
      return session.login;
    })
   )
 }
}

1 Ответ

0 голосов
/ 27 ноября 2018

Map, Set и Promise являются функциями ES6.В вашем tsconfig.json вы используете:

"target": "es5" 

используйте

"target": "es6" 

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

"lib": ["es6"] 

избегать изменения цели, потому что цельиспользуется для указания Typescript, в какую версию ECMAScript скомпилировать ваши файлы .ts.Конечно, вы можете изменить его, если браузер, в котором будет работать ваше приложение, будет поддерживать эту версию ECMAScript.

, или самым простым способом будет установка

npm install --save-dev @types/core-js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...