在组件中获取对象时未定义对象

时间:2019-10-28 12:53:41

标签: angular

我正在获取json对象课程的价值,因此可以在我的patchValue上进行设置。我的控制台日志显示数据,但是当我尝试在组件上获取数据时,它说的course_professor是undefined或courseCode。我也尝试遍历我的json对象课程,但是当我得到特定对象时,它也显示未定义。该如何解决?

console.log

{
    "message": "Sucess!",
    "course": {
        "id": 1,
        "courseCode": "test",
        "courseName": "test",
        "courseDescription": "test",
        "course_professor": 2,
        "course_created_by": 2,
        "course_date_created": "2019-10-13T20:19:57.546529Z",
        "course_last_modified": "2019-10-13T20:19:57.546563Z"
    },
    "prof": [
        {
            "id": 2,
            "email": "prof@gmail.com",
            "first_name": "Prof",
            "last_name": "Good"
        },
        {
            "id": 3,
            "email": "test@test.com",
            "first_name": "test",
            "last_name": "test"
        }
    ],
    "result": [
        {
            "id": 1,
            "class_id": 15,
            "coursemodule_title": " Module 1",
            "coursemodule_date_created": "2019-09-30T09:54:22.109528Z",
            "coursemodule_last_modified": "2019-09-30T09:54:22.109559Z",
            "coursemodule_created_by": 2,
            "coursemodule_course_id": {
                "id": 1,
                "courseCode": "test",
                "courseName": "test",
                "courseDescription": "test",
                "course_professor": 2,
                "course_created_by": 2,
                "course_date_created": "2019-10-13T20:19:57.546529Z",
                "course_last_modified": "2019-10-13T20:19:57.546563Z"
            }
        }
    ] }

组件

@Input() course: any = [];

  courseUpdateForm = new FormGroup({
    course_professor: new FormControl(''),
    courseCode: new FormControl(''),
    courseName: new FormControl(''),
    courseDescription: new FormControl('')
  });

    constructor(
      private coursemoduleService: CoursemoduleapiService
  ) { }

    ngOnInit() {
   this.courseUpdateForm.patchValue({
        course_professor: this.course.course.course_professor,
        courseCode: this.course.course.courseCode,
        courseName: this.course.course.courseName,
        courseDescription: this.course.course.courseDescription
    })

    }

  ngOnChanges(changes: SimpleChanges) {
    this.courseUpdateForm.patchValue({
        course_professor: this.course.course.course_professor,
        courseCode: this.course.course.courseCode,
        courseName: this.course.course.courseName,
        courseDescription: this.course.course.courseDescription
    })
  }

请在此处传递数据。请参阅此链接: https://stackblitz.com/edit/angular-eyuccg

2 个答案:

答案 0 :(得分:0)

在CoursemoduleComponent中,您获取课程列表并将其分配给课程变量数组。这是您组件中的本地文件,并且已保存。这就是您在日志中看到的内容。之后,您将重定向到/ courses。因此,您需要以某种方式将该数据传递给另一个组件。您可以为此使用路由器参数或服务。或将其置于可观察状态并从另一个组件进行订阅。但是您需要将课程从您的组件传递到新的组件。

答案 1 :(得分:0)

我所做的是我使用localstorage来保存获取详细信息时对象的ID。然后,将id插入到details函数中,并尝试获取对象值,但是仍然出现未定义的错误。因此,我改用了formbuilder并使用setValue函数将数据存储在表单上。