為什么{list.title}}}沒有顯示

我在youtube上跟隨一個教程來構建我的第一個meanstack應用程序,但是列表的標題沒有顯示出來。我是用失眠來做清單的。以下是我在Node和express后端的代碼:

const express = require('express');
const app = express();
const mongoose = require('./database/mongoose');

const List = require('./database/models/list');
const Task = require('./database/models/task');
app.use(express.json());

app.use((req, res, next)=>{
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
})




app.get('/lists', (req, res) => {
  List.find({})
  .then(lists => res.send(lists))
  .catch((error) => console.log(error));
});

app.post('/lists', (req, res)=>{
 ( new List({ 'title': req.body.title }))
   .save()
   .then((list) => res.send(list))
   .catch((error) => console.log(error));
});

app.get('/lists/:listId', (req,res) => {
  List.find({ _id:req.params.listId})
  .then((list) => res.send(list))
   .catch((error) => console.log(error));
});

app.patch('/lists/:listId', (req,res) => {
  List.findOneAndUpdate({ '_id': req.params.listId}, {$set:req.body})
  .then((list) => res.send(list))
   .catch((error) => console.log(error));
})

app.delete('/lists/:listId', (req,res) => {
  const deleteTasks = (list)=> {
    Task.deleteMany({ _listId:list._id})
    .then(() => list)
    .catch((error) => console.log(error));
  };
  List.findByIdAndDelete({ _id: req.params.listId})
               .then((list) => res.send(deleteTasks(list)))
              .catch((error) => console.log(error));

})
/* Tasks*/

app.get('/lists/:listId/tasks', (req,res) => {
  Task.find({ _listId: req.params.listId})
  .then((tasks) => res.send(tasks))
   .catch((error) => console.log(error));
});

app.post('/lists/:listId/tasks', (req, res)=>{
  ( new Task({ '_listId': req.params.listId , 'title': req.body.title}))
    .save()
    .then((tasks) => res.send(tasks))
    .catch((error) => console.log(error));
 });

 app.get('/lists/:listId/tasks/:taskId', (req,res) => {
  Task.findOne({ _listId: req.params.listId, _id:req.params.taskId})
  .then((task) => res.send(task))
   .catch((error) => console.log(error));
});

app.patch('/lists/:listId/tasks/:taskId', (req,res) => {
  Task.findOneAndUpdate({ _listId: req.params.listId, _id:req.params.taskId}, {$set:req.body})
  .then((task) => res.send(task))
   .catch((error) => console.log(error));
})

app.delete('/lists/:listId/tasks/:taskId', (req,res) => {
  Task.findByIdAndDelete({ _listId: req.params.listId, _id:req.params.taskId})
  .then((task) => res.send(task))
   .catch((error) => console.log(error));
})

app.listen(3000, () => console.log("Server Connected on Port 3000"));

angular服務文件是:

import { Injectable } from '@angular/core';
import{ WebService} from './web.service';
import Task from './models/task';
@Injectable({
  providedIn: 'root'
})
export class TaskService {

  constructor(private webService: WebService) { }

  getLists(){
    return this.webService.get('lists');
  }
  createLists(title:string){
  return this.webService.post('lists', {title})
  }
  getTasks(listId: string){
    return this.webService.get('lists/${listId}/tasks');
  }
  createTasks(listId: string, title:string){
  return this.webService.post('lists/${listId}/tasks', {title})
  }
  deleteLists(listId: string){
    return this.webService.delete('lists/${listId}')
  }
  deleteTasks(listId: string){
    return this.webService.delete('lists/${listId}/tasks/${taskId}')
  }
  setCompleted(listId: string, task: Task){
    return this.webService.patch('lists/${listId}/tasks/${task._id}', {completed: !task.completed})
  }
}

and

import { Injectable } from '@angular/core';
import{HttpClient} from "@angular/common/http";
@Injectable({
  providedIn: 'root'
})
export class WebService {
readonly ROOT_URL;
  constructor(private http: HttpClient) {
    this.ROOT_URL = "http//localhost:3000";
   }

   get(uri: string){
     return this.http.get('${this.ROOT_URL}/${uri}');
   }

   post(uri: string, payload: Object){
    return this.http.post('${this.ROOT_URL}/${uri}', payload);
  }

  patch(uri: string, payload: Object){
    return this.http.patch('${this.ROOT_URL}/${uri}', payload);
  }

  delete(uri: string){
    return this.http.delete('${this.ROOT_URL}/${uri}');
  }

}

最后HTML文件是

<div class= "centered-content">
  <div class= "task-manager-container">
    <div class= "sidebar">
      <h1 class= "title has-text-primary">Lists
      </h1>
      <div class= "list-menu">
       <a href="#" class="list-menu-item " *ngFor="let list of lists">
         <p class="white-text">
          {{ list.title }}
           <span class="pull-right task-delete btn-rounded-corners">X</span>
         </p>
       </a>
      </div>
      <button class="btn btn-primary btn-rounded-corners">Add Lists</button>
    </div>
  <div class="task-list-container">
    <h1 class= "title has-text-primary">Tasks</h1>
    <div class="task complete">
      <p class="white-text">
        Task
        <span class="pull-right task-delete btn-rounded-corners">X</span>
      </p>
    </div>
  </div>
  </div>
</div>


這是task-view.component.ts文件

import { Component, OnInit } from '@angular/core';
import List from 'src/app/models/list';
import Task from 'src/app/models/task';
import { TaskService } from 'src/app/task.service';

@Component({
  selector: 'app-task-view',
  templateUrl: './task-view.component.html',
  styleUrls: ['./task-view.component.scss']
})
export class TaskViewComponent implements OnInit {
  lists: List[]= [];
  task: Task[]= [];
  constructor(private taskService: TaskService) { }

  ngOnInit()  {
    this.taskService.getLists().subscribe((lists: List[]) => this.lists = lists);
  }

}

它可能是不推薦使用的語法或API中缺少的部分。

? 最佳回答:

在你的TaskService&WebService文件中,你使用了single-quote(')。將其替換為back-ticks(`)。

下面我舉一個例子:

you've used:

this.http.get('${this.ROOT_URL}/${uri}')

它應該是:

this.http.get(`${this.ROOT_URL}/${uri}`)

在此處了解有關模板文字的更多信息

主站蜘蛛池模板: 五十路熟女人妻一区二区| 无码av中文一区二区三区桃花岛 | 高清一区二区在线观看| 国产一区麻豆剧传媒果冻精品| 97精品国产一区二区三区| 国产午夜福利精品一区二区三区| 加勒比无码一区二区三区| 麻豆文化传媒精品一区二区| 中文字幕日本一区| 一区二区三区视频观看| 无码aⅴ精品一区二区三区| 欧美av色香蕉一区二区蜜桃小说 | 国产精品视频一区二区三区| 国产在线精品一区二区夜色| 极品少妇伦理一区二区| 日韩在线视频一区二区三区| 国产精品久久无码一区二区三区网| 人妻aⅴ无码一区二区三区| 亚洲av鲁丝一区二区三区| 中文字幕一区二区三区精华液 | 久久国产精品一区免费下载| 成人精品一区二区三区不卡免费看| 国产亚洲综合一区二区三区| 福利电影一区二区| 精品一区二区三区视频在线观看| 在线观看国产一区二区三区| 国产在线观看一区二区三区| 国产一区二区三区免费视频| 国产精品成人一区无码| 国产在线一区观看| 国产福利电影一区二区三区,日韩伦理电影在线福 | 亚洲AV无码一区东京热| 日本在线不卡一区| 亚洲国产情侣一区二区三区| 亚洲熟妇成人精品一区| 国产成人一区二区三区免费视频| 国产一区韩国女主播| 中文字幕无码免费久久9一区9| 日韩一区二区久久久久久| 中文字幕日韩丝袜一区| 在线观看国产一区亚洲bd|