angular+ 路由学习 (五)多路由出口学习

  • 关于第二路由,即命令路由和主路由无命名的区别:

    • 命名路由和主路由互不依赖
    • 命名路由可以和其他路由组合使用,而主路由只能支持一条无命名路由
    • 命名路由可以显示在命令出口中
  • 通俗的说;<router-outlet></router-outlet>是模块的路由出口;现在我想再加一个模块;这个模块也放在主模块中;即使用命名路由作为第二路由出口,显示这个模块在主要模块中;
  • 使用方法:在主页面中app.component.html中,添加第二路由出口,并添加导航
  • <!--The content below is only a placeholder and can be replaced.-->
    <h1>Angular Router</h1>
    <nav>
      <!-- 路由跳转一 -->
    <a [routerLink]="[ ‘/crisis-center‘ ]" routerLinkActive="active">Crisis Center</a>
    <a [routerLink]="[ ‘/heroes‘ ]" routerLinkActive="active">heroes</a>
    <!-- 第二路由的导航显示 -->
    <a [routerLink]="[{ outlets: { popup: [‘compose‘]}}]">第二路由Contact</a>
      <!-- 路由跳转二 -->
    <!-- <a routerLink="/crisis-center" routerLinkActive="active">Crisis Center</a>
    <a routerLink="/heroes" routerLinkActive="active">heroes</a> -->
    </nav>
    <!-- 路由出口,占位符,可将显示在出口的组件显示在这里 -->
    <!-- 转场:让@routeAnimation 触发器绑定到需要应用路由动画到元素上,routerOutlet 导出成outlet 变量,绑定一个到路由出口的引用
        函数根据activatedRoute 提供的data对象来返回动画属性
    -->
    <div [@routeAnimation]="getAnimationData(routerOutlet)">
        <router-outlet #routerOutlet="outlet"></router-outlet>
      </div>
    <!-- 每个模块,路由器只能支持一个无名主路由出口,模块可以有多个命名路由出口,以此可以同时根据不同路由显示不同内容 -->
      <!-- 第二路由出口: 不依赖主路由,可以和其他路由组合使用,显示在命令出口位置 -->
      <router-outlet name="popup"></router-outlet>
  • 创建一个组件,让这个组件作为这个第二路由出口的显示;ng g component compose-message
  • 将第二路由导入主模块的路由中;
  • import { NgModule } from ‘@angular/core‘;
    import { Routes, RouterModule } from ‘@angular/router‘;
    
    import { PageNotFoundComponent } from ‘./page-not-found/page-not-found.component‘;
    import { ComposeMessageComponent } from ‘./compose-message/compose-message.component‘;
    // 添加第二路由
    const routes: Routes = [
      { path: ‘compose‘ , component: ComposeMessageComponent, outlet: ‘popup‘},
      { path: ‘‘, redirectTo: ‘heroes‘, pathMatch: ‘full‘ },
      { path: ‘**‘, component: PageNotFoundComponent }
    
    ];
    // .forRoot()-- 在应用的顶级配置路由器,提供路由需要的服务提供商和指令,基于浏览器当前URL执行首次导航
    // enableTarcing -- 查看导航在生命周期中发生的事件,并输出到控制台
    @NgModule({
      imports: [
        RouterModule.forRoot(routes, { enableTracing: false })
      ],
      exports: [RouterModule]
    })
    export class AppRoutingModule { }
  • compose-message 组件代码
  • <h3>Contact Crisis Center</h3>
    <div *ngIf="details">
      {{ details }}
    </div>
    <div>
      <div>
        <label>Message: </label>
      </div>
      <div>
        <textarea [(ngModel)]="message" rows="10" cols="35" [disabled]="sending"></textarea>
      </div>
    </div>
    <p *ngIf="!sending">
      <button (click)="send()">Send</button>
      <button (click)="cancel()">Cancel</button>
    </p>
  • import { Component, HostBinding } from ‘@angular/core‘;
    import { Router } from ‘@angular/router‘;
    
    @Component({
      selector: ‘app-compose-message‘,
      templateUrl: ‘./compose-message.component.html‘,
      styleUrls: [‘./compose-message.component.css‘]
    })
    export class ComposeMessageComponent {
      details: string;
      message: string;
      sending = false;
    
      constructor(private router: Router) { }
    
      send() {
        this.sending = true;
        this.details = ‘Sending Message...‘;
    
        setTimeout(() => {
          this.sending = false;
          this.closePopup();
        }, 1000);
      }
    
      cancel() {
        this.closePopup();
      }
    //  清除第二路由;即移除路由出口,清除导航url显示
      closePopup() {
        // Providing a `null` value to the named outlet
        // clears the contents of the named outlet
        this.router.navigate([{ outlets: { popup: null } }]);
      }
    }
  • 视图显示

原文地址:https://www.cnblogs.com/gushiyoyo/p/11268273.html

时间: 2024-10-03 23:17:46

angular+ 路由学习 (五)多路由出口学习的相关文章

angular学习笔记(十七)-路由和切换视图

本篇介绍angular中如何通过判断url的hash值来显示不同的视图模板,并使用不同的控制器: 下面,通过一个例子,来一步一步说明它的用法: 我们要做一个邮箱应用,打开的时候显示的是邮件列表: 然后点击邮件主题,可以查看该邮件的详细内容: 点击返回列表,再回到列表页 一. 创建index页面: <!DOCTYPE html> <html> <head> <title>14.1路由和视图切换</title> <meta charset=&q

AngularJS“多重路由”嵌套模块——AngularJS“路由”嵌套学习资料教程

这是小编的一些学习资料,理论上只是为了自己以后学习需要的,但是还是需要认真对待的 以下内容仅供参考,请慎重使用学习 1.AngularJS路由嵌套 Angularjs本身自带路由模块,可以满足通过不同的 URL 访问不同的内容,当然实际应用为在单页面点击不同按钮等加载不同页面 之前有关于angular-route路由的介绍,但是只能一层路由嵌套,如果需要多重嵌套就是不够用了 UI-Router作为AngularUI为开发者提供的其中实用的一个模块,根据URL状态组织和控制界面UI的渲染,不是仅仅

Linux数据包路由原理、Iptables/netfilter入门学习

相关学习资料 https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html http://zh.wikipedia.org/wiki/Netfilter http://www.netfilter.org/projects/iptables/ http://linux.vbird.org/linux_server/0250simple_firewall.php http://linux.vbird.o

CCNA学习笔记七——路由概述

静态路由协议: 动态路由协议:AS(自治系统):执行统一路由策略的一组设备的集合 EGP(外部网关协议): BGP:边界网关协议 IGP(内部网关协议): 距离矢量协议: RIP:V1,V2 IGRP EIGRP 链路状态路由协议: OSPF IS-IS 静态路由: 特点: 路由表是手工设置的 除非网络管理员干预,否则静态路由不会发生变化 路由表的形成不需要占用网络资源 适合环境 一般用于网络规模很小,拓扑结构固定的网络中 默认路由: 特点: 在所有路由类型中,默认路由优先级最低 适用环境: 一

FreakZ学习笔记:路由应答机制

FreakZ学习笔记:路由应答机制 路由应答机制是建立在路由发现和路由请求完成之后进行的,换句话说就是在通信链路建立完成之后,帧信息被传输到目的节点时,由目的节点进行的应答机制:路由应答机制在NWK.c下的mac_data_ind函数被调用,该函数的功能在另一篇文章<FreakZ学习笔记:接收过程详解>中有解释,这里不再赘述:相应代码如下: switch (cmd.cmd_frm_id) { case NWK_CMD_RTE_REQ: if(nib.dev_type != NWK_END_DE

RabbitMQ (消息队列)专题学习05 routing(路由)

(使用Java客户端) 一.概述 在前面的学习中,构建了一个简单的日志记录系统,能够广播所有的日志给多个接收者,在该部分学习中,将添加一个新的特点,就是可以只订阅一个特定的消息源,也就是说能够直接把关键的错误日志消息发送到日志文件保存起来,不重要的日志信息文件不保存在磁盘中,但是仍然能够在控制台输出,那么这便是我们这部分要学习的消息的路由分发机制. 二.路由功能实现 2.1.绑定(bindings) 在前面的学习中已经创建了绑定(bindings),代码如下: channel.queueBind

跟华为工程师学习OpenVPN高级路由技术

转:http://www.luyouqiwang.net/huaweiluyouqi691.html OpenVPN内部路由和系统的路由之间的区别在于,系统路由完全照着最长前缀匹配原则,找到路由之后,将数据包从对应的网卡接口转发出去.而 OpenVPN内部的路由虽然最终也是决定是否转发并且往哪里转发数据包,然而这个"是否转发"以及"往哪里转发"是和系统路由大大不同的,OpenVPN是否转发数据包依照的其内部的一张路由表而和系统的路由表没有关系,往哪里转发呢?其实是往

TtinkPHP学习笔记之路由解析

TP框架URL地址可以有以下几种: http://域名/index.php?m=模块&c=控制器&a=方法         基本get模式 http://域名/index.php/模块/控制器/方法                         路径模式pathinfo http://域名/模块/控制器/方法                                         rewrite重写模式(需要apache开启对.htaccess的支持) http://域名/ind

FreakZ学习笔记:路由发现机制

路由发现机制 路由发现机制只有在发送通信包的过程中会被调用,而接收过程因为发送时候已经进行了通信链路的扫描和连接,所以不会再进行路由发现机制. 路由的所有处理机制都是在NWK层进行的,当然,路由发现机制也一样.当协议栈进行数据发送时,会依次按照APP->APS->NWK->MAC->PHY->Radio的层次关系来进行,APS层执行完成之后,会跳转到NWK层的nwk_data_req函数,该函数为NWK数据请求服务,接收APS层的数据并且加上NWK层的包头,然后将数据打包.n