无法获得参数节点和角度



我有一个从mongodb中获取的毒品列表,它们显示在一个页面上,当我单击一个页面时,它会在另一个页面上打开,用等于单击todo的URL。现在,我正在尝试从URL获取ID并将其发送到节点服务器,但我无法理解。

 ngOnInit() {
   this.route.params
   .subscribe(
    (params: Params) => {
      let todoId = params['userId'];
      console.log(todoId);
    }
  );
}

控制台返回未定义。我找到了一个解决方案,该解决方案是由此代码线获取的一个解决方案,但是它只会获得一次ID,当我单击另一个todo时,它没有记录任何内容。

 let id = this.route.snapshot.paramMap.get('id');
 console.log(id)

以及当我想以此发送请求时:

let id = this.route.snapshot.paramMap.get('id');
   this.todoService.getSingleTodo(id)
    .subscribe(
      (todo: Todo) => {
        this.todo = todo;
        console.log(todo);
      }
    );

我在控制台" messages"中得到了此错误:" cast to objectid失败":d path " " _ id " "

服务看起来像这样:

    getSingleTodo(id) {
     return this.http.get('http://localhost:3000/todos/:id')
        .map( response => response.json().obj)
        .map( todo => todo.map(todo => new Todo(todo.todoHeadline, 
     todo.todoDescription, todo._id)));
}

和节点文件:

router.get('/:id', (req, res, next) => {
console.log(req.params.id);
Todo.findById(req.params.id, (err, singleTodo) => {
    if (err) {
        return res.status(500).json({
            title: 'An error occured',
            error:err
        });
    }
     res.status(201).json({
        message: 'Success',
        obj: singleTodo
        });
    });
});

此控制台打印:id。

主路由文件

const APP_ROUTES: Routes = [
{ path: '', redirectTo: '/auth', pathMatch: 'full' },
{ path: 'todos', component: TodoComponent, children: TODO_ROUTES},
{ path: 'auth', component: AuthenticationComponent, children: AUTH_ROUTES }
];

和儿童托多斯的路线

export const TODO_ROUTES: Routes = [
{path: 'todo/add', component: TodoAddComponent},
{path: ':id', component: TodoListComponent},
{path: 'edit', component: TodoEditComponent}
];

html,其中所有的毒品都像这样显示

<ul class="list-group">
     <li class="list-group-item"
      *ngFor="let todo of todos;"
      [routerLink]="['/todos', todo.todoId]">{{todo.todoHeadline}}
     </li>
</ul>

有什么问题?

这是错误的:

let todoId = params['userId'];

在路由中,您定义了路径变量将被命名为" ID":

{path: ':id', component: TodoListComponent},

因此,当您尝试访问路径变量用户ID时,显然会返回未定义。

最新更新