当前位置: 首页 > 知识库问答 >
问题:

TypeError:无法使用Angular v6读取未定义的属性“map”

郗鹏
2023-03-14

由于某些原因,JSON的响应映射不正确,这里是我的HTML。配置文件-search.component.html

<h3>Enter Username</h3>
<input (keyup)="search($event.target.value)" id="name" placeholder="Search"/>
<ul>
  <li *ngFor="let package of packages$ | async">
    <b>{{package.name}} v.{{package.repos}}</b> -
    <i>{{package.stars}}</i>`enter code here`
  </li>
</ul>

下面是html从中提取的组件。配置文件-search.component.ts

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

import { Observable, Subject } from 'rxjs';
import { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';

import { NpmPackageInfo, PackageSearchService } from './profile-search.service';

@Component({
  selector: 'app-package-search',
  templateUrl: './profile-search.component.html',
  providers: [ PackageSearchService ]
})
export class PackageSearchComponent implements OnInit {
  withRefresh = false;
  packages$: Observable<NpmPackageInfo[]>;
  private searchText$ = new Subject<string>();

  search(packageName: string) {
    this.searchText$.next(packageName);
  }

  ngOnInit() {
    this.packages$ = this.searchText$.pipe(
      debounceTime(500),
      distinctUntilChanged(),
      switchMap(packageName =>
        this.searchService.search(packageName, this.withRefresh))
    );
  }

  constructor(private searchService: PackageSearchService) { }


  toggleRefresh() { this.withRefresh = ! this.withRefresh; }

}
import { Injectable, Input } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';

import { Observable, of } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

import { HttpErrorHandler, HandleError } from '../http-error-handler.service';

export interface NpmPackageInfo {
  name: string;
}

export const searchUrl = 'https://api.github.com/users';

const httpOptions = {
  headers: new HttpHeaders({
    'x-refresh':  'true'
  })
};

function createHttpOptions(packageName: string, refresh = false) {
    // npm package name search api
    // e.g., http://npmsearch.com/query?q=dom'
    const params = new HttpParams({ fromObject: { q: packageName } });
    const headerMap = refresh ? {'x-refresh': 'true'} : {};
    const headers = new HttpHeaders(headerMap) ;
    return { headers, params };
}

@Injectable()
export class PackageSearchService {
  private handleError: HandleError;

  constructor(
    private http: HttpClient,
    httpErrorHandler: HttpErrorHandler) {
    this.handleError = httpErrorHandler.createHandleError('HeroesService');
  }

  search (packageName: string, refresh = false): Observable<NpmPackageInfo[]> {
    // clear if no pkg name
    if (!packageName.trim()) { return of([]); }

    // const options = createHttpOptions(packageName, refresh);

    // TODO: Add error handling
    return this.http.get(`${searchUrl}/${packageName}`).pipe(
      map((data: any) => {
        return data.results.map(entry => ({
            name: entry.any[0],
          } as NpmPackageInfo )
        )
      }),
      catchError(this.handleError('search', []))
    );
  }
}
return this.http.get(`${searchUrl}/${packageName}`).pipe(
    map((data: any) => {
        return data.results.map(entry => ({
            name: entry.any[0],
          } as NpmPackageInfo )
        )

http-error-handler.service.ts:33类型错误:无法读取MapSubscriber.Project(profile-search.service.ts:49)在MapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/map.js.mapSubscriber._next(map.js:75)在MapSubscriber.push./node_modules/rxjs/_esm5/internal/subscriber.js.subscriber.next(subscriber.js:93)在MapSubscriber.push./node_modules/rxjs/_esm5/internal/operators/map.js.mapsubscriber._next node_modules/rxjs/_esm5/internal/subscriber.js.subscriber.next(Subscriber.js:93)位于filtersubscriber.push./node_modules/rxjs/_esm5/internal/operators/filter.js.filtersubscriber._next(Filter.js:85)位于filtersubscriber.push./node_modules/rxjs/_esm5/internal/subscriber.js.subscriber.next(Subscriber.js:93)位于mergeMapsubscriber.push./node_modules/rxjs/_esm5/internal/operators/mergeMapsubscriber.notifyNext s:136)在innersubscriber.push../node_modules/rxjs/_esm5/internal/innersubscriber.js.innersubscriber._next(innersubscriber.js:20)位于innersubscriber.push../node_modules/rxjs/_esm5/internal/subscriber.js.subscriber.next(subscriber.js:93)

共有1个答案

方博
2023-03-14

data.results中的results可能是未定义的,请检查data对象是否与您期望的架构匹配。

 类似资料:
  • 如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')

  • 我不知道问题是什么。它不应该监听错误,因为我选择有条件地呈现消息。 我尝试将设置为no成功。 我尝试失败。 我尝试了我认为问题可能出在扩展ErrorHandlerProps接口的某个地方,但我已经扩展了MapStateToProps?

  • 问题内容: 我试图在ajax回调从REST api接收数据后设置组件的setState。这是我的组件构造函数代码 然后,我有一个如下所示的方法。 现在,这是我执行getAJAX请求的getPosts函数。 我想设置状态,但出现以下错误。 不太清楚是什么原因造成的。如果有人指出我正确的方向,那将真的很有帮助。提前致谢。 问题答案: 还绑定回调函数,以便回调内部指向React Component的上下

  • 我试图使用node.js express web服务器中的@tensorflow/tfjs-node模块。但是,我得到了下面的错误。我不明白为什么我会出现这个错误。我刚刚在node.js服务器中添加了1行代码。我使用“npm install@tensorflow/tfjs-node”完成的安装。可能的问题是什么? null 先谢谢你, var nonMaxSuppressionV3Impl=tf.

  • 我正在尝试联系许多对许多,在两个模式“培训和培训课程”,所以我做了第三个模式“课程”,以尝试关系1对许多。但是我得到了一个错误: null TypeError:无法读取对象上未定义得属性“belongsto”。(c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppDatabaseDat

  • 上面的函数返回一个类似“failed”的字符串。但是,当我尝试在其上运行then函数时,它将返回 并且光标指示在之后和。 下面是完整的功能: 更新 下面是函数 我确信将导致一个“failed”字符串。没别的了。

  • 无法显示Barchart。 我有一个包含数据的表,它是可拖动的。在表格旁边我有一个两个dropbox被拖动的表格中的数据可以被拖动到框中。当将数据拖动到框中时,应该会显示条形图。 这是我的家。component.html 这是我的家。Component.TS 这是我的酒吧 在拖放数据时,特定的图表必须显示在Dropbox上。

  • 我被困在这个错误上:类型错误:无法读取未定义的属性'getText'当我在量角器v.4.0.14中运行我的测试时,我所理解的是getText()无法从表单元格中获取文本,因为CSS选择器没有正确地选择它,或者我使用错误的方法从单元格检索文本?! 我的页面对象文件的代码: 以下是规范文件的代码: 这是一条错误消息: 失败:1)通讯录应能够搜索保存的联系人消息:失败:无法读取未定义堆栈的属性“getT