HTML5技术

再遇angular(angular4项目实战指南) - 大~熊(4)

字号+ 作者:H5之家 来源:H5之家 2017-08-08 16:00 我要评论( )

经过一番艰苦卓绝的寻找,我终于在https://scotch.io/tutorials/get-angular-1-features-in-angular-2#toc-global-communication-with-services 找到了一个比较简单的解决方法,虽然我也不是太理解这个方法,不过能

经过一番艰苦卓绝的寻找,我终于在https://scotch.io/tutorials/get-angular-1-features-in-angular-2#toc-global-communication-with-services 找到了一个比较简单的解决方法,虽然我也不是太理解这个方法,不过能用。下面将我做的修改的文件列出来供你参考。此问题的解决还可以用一个些数据状态库。

// /home/yibingxiong/ng-plan/src/app/service/plan.service.ts import { Injectable } from '@angular/core'; import { Plan } from '../bean/plan'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; @Injectable() export class PlanService { plans: Plan[]; totalTime = 0; totalTime$ = new BehaviorSubject<number>(this.totalTime); constructor() { this.plans = [ { id: 11, name: '大熊', date: 100000, totalTime: 1, comment: '学习到天亮' }, { id: 22, name: '大熊', date: 100000, totalTime: 1, comment: '学习到天亮' }, { id: 33, name: '大熊', date: 100000, totalTime: 1, comment: '学习到天亮' }]; this.totalTime = this.getTotalTime2(); } getPlans() { return this.plans; } // 添加计划 addPlan(newplan: Plan) { this.totalTime = this.getTotalTime2(); this.updateTotalTimeSbj(this.totalTime); this.plans.push(newplan); } // 删除计划 deletePlan(id: number) { let index = 0; for (let i = 0; i < this.plans.length; i++) { if (this.plans[i].id === id) { index = i; break; } } this.plans.splice(index, 1); this.totalTime = this.getTotalTime2(); this.updateTotalTimeSbj(this.totalTime); } // 获得一个计划 getPlan(id: number) { for (let i = 0; i < this.plans.length; i++) { if (this.plans[i].id === id) { return this.plans[i]; } } } // 计算计划总时间 getTotalTime2() { let t = 0; for (const p of this.plans) { t += p.totalTime; } return t; } get getTotalTime(): number { return this.totalTime; } private updateTotalTimeSbj(value) { this.totalTime$.next(value); } } // /home/yibingxiong/ng-plan/src/app/app.component.ts import { Component } from '@angular/core'; import { PlanService } from './service/plan.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private planService: PlanService) { } title = 'app'; } // /home/yibingxiong/ng-plan/src/app/app.component.html <app-navigation></app-navigation> <div class="container"> <div class="col-sm-3"> <div class="panel panel-default"> <div class="panel-heading"> <h1 class="text-center">已有时长</h1> </div> <div class="panel-body"> <h1 class="text-center">{{planService.getTotalTime}} 小时</h1> </div> </div> </div> <div class="col-sm-9"> <router-outlet></router-outlet> </div> </div> 12. 添加计划
  • 老规矩,先创建页面组件
  • Markdown

  • 添加到路由
  • 在/home/yibingxiong/ng-plan/src/app/app.module.ts的路由添加
  • { path: 'create', component: CreateComponent },

  • 修改/home/yibingxiong/ng-plan/src/app/home/home.component.html
  • <a routerLink="/create">创建一个任务</a>

  • 完善添加计划页面
    修改/home/yibingxiong/ng-plan/src/app/create/create.component.html
  • <div class="form-horizontal"> <div class="form-group"> <div class="col-sm-6"> <label>日期</label> <input type="date" class="form-control" placeholder="Date" /> </div> <div class="col-sm-6"> <label>时间</label> <input type="number" class="form-control" placeholder="Hours" /> </div> </div> <div class="form-group"> <div class="col-sm-12"> <label>备注</label> <input type="text" class="form-control" placeholder="Comment" /> </div> </div> <button class="btn btn-primary">保存</button> <a class="btn btn-danger">取消</a> <hr> </div>
  • 做添加计划事件处理
  • 创建事件处理函数
  • <div class="form-horizontal"> <div class="form-group"> <div class="col-sm-6"> <label>日期</label> <input type="date" class="form-control" placeholder="Date" [(ngModel)]="newplan.date" /> </div> <div class="col-sm-6"> <label>时间</label> <input type="number" class="form-control" placeholder="Hours" [(ngModel)]="newplan.totalTime" /> </div> </div> <div class="form-group"> <div class="col-sm-12"> <label>备注</label> <input type="text" class="form-control" placeholder="Comment" [(ngModel)]="newplan.comment" /> </div> </div> <button class="btn btn-primary" (click)="addPlan(newplan)">保存</button> <a class="btn btn-danger">取消</a> <hr> </div>
  • 更新模板
  • <div class="form-horizontal"> <div class="form-group"> <div class="col-sm-6"> <label>日期</label> <input type="date" class="form-control" placeholder="Date" [(ngModel)]="newplan.date" /> </div> <div class="col-sm-6"> <label>时间</label> <input type="number" class="form-control" placeholder="Hours" [(ngModel)]="newplan.totalTime" /> </div> </div> <div class="form-group"> <div class="col-sm-12"> <label>备注</label> <input type="text" class="form-control" placeholder="Comment" [(ngModel)]="newplan.comment" /> </div> </div> <button class="btn btn-primary" (click)="addPlan(newplan)">保存</button> <a class="btn btn-danger">取消</a> <hr> </div>
  • 取消返回处理
    添加location依赖

    Markdown


    在create组件注入并使用

    Markdown


    在模板添加事件
  • <a class="btn btn-danger" (click)="cancel()">取消</a> 13. 去掉假数据,并添加无数据支持

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 - 我叫小熊

      AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 -

      2017-07-12 11:01

    • 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序 - SmallProg

      在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序 - Sma

      2017-07-08 16:01

    • angular-动画。 - IT-Qcp

      angular-动画。 - IT-Qcp

      2017-07-01 09:00

    • Angular2入门学习 - Anlycp

      Angular2入门学习 - Anlycp

      2017-06-27 13:05

    网友点评