国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

angular中如何定義一個全局組件?

這篇具有很好參考價值的文章主要介紹了angular中如何定義一個全局組件?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

需求,我們需要新建一個navBreadcrumb的全局組件。這是一個面包屑導(dǎo)航,在不同的頁面引入時傳入一個路由數(shù)組即可。

第一步:我們新建這個組件:

ng g c navBreadcrumb 

ng g m navBreadcrumb

----------nav-breadcrumb.module----------

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {NavBreadcrumbComponent} from "./nav-breadcrumb.component"
import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
import { RouterModule } from '@angular/router';


@NgModule({
  declarations: [NavBreadcrumbComponent],
  imports: [
    CommonModule,
    NzBreadCrumbModule,
    RouterModule
  ],
  exports:[NavBreadcrumbComponent]
})
export class NavBreadcrumbModule { }


---------nav-breadcrumb.component----------------

import { Component, Input } from '@angular/core';
import {Breadcrumb} from "../../../interfaces/index"
import { Router, RouterLink } from '@angular/router'
@Component({
  selector: 'app-nav-breadcrumb',
  templateUrl: './nav-breadcrumb.component.html',
  styleUrls: ['./nav-breadcrumb.component.css']
})
export class NavBreadcrumbComponent {
  @Input() routeList: Breadcrumb[] =[]
  constructor(private router:Router){

  }

}

 --------nav-breadcrumb.html----------------

<nz-breadcrumb>
        <!-- <nz-breadcrumb-item>
            <a routerLink="/storelist/storelist">店鋪列表</a>
        </nz-breadcrumb-item>
        <nz-breadcrumb-item >
            創(chuàng)建店鋪
        </nz-breadcrumb-item>  -->
       <nz-breadcrumb-item *ngFor="let item of routeList"> 
             <ng-container *ngIf="item.isClick;else lastBreadCrumb">
                <a [routerLink]="[item.path]">{{item.name}}</a>
            </ng-container>
            <ng-template #lastBreadCrumb>
               {{item.name}}
            </ng-template>  
        </nz-breadcrumb-item> 
</nz-breadcrumb>
 



這里有幾個要注意的點:

1 ---nav-breadcrumb.module----------這個文件時一定要的。angular和vue/react不同,module>component,對于任何頁面而言,要引入其他組件,只需要引入該模塊就可以了。

所以我們新建這個文件。先在declarations中申明組件,同時要exports,導(dǎo)出去,angular中如何定義一個全局組件?,angular,angular.js,前端,javascript

?,第二步:在其他頁面引入該組件:比如我們在storegGenerate.ts文件中引入它,我們只需要導(dǎo)入nav-breadcrumb.module這個模塊即可

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {NavBreadcrumbModule} from "../../components/nav-breadcrumb/nav-breadcrumb.module"

@NgModule({
 
  imports: [
    CommonModule,
    
    NavBreadcrumbModule  //這里導(dǎo)入要引用組件的module
  ],
  declarations: [
    StoreGenerateComponent,
  ],
})
export class StoreGenerateModule {
   

 }

對于其他頁面,同理:

第三步:我們要封裝組件

還記得最開始的需求嗎?我們這個全局組件是一個面包屑導(dǎo)航,我們用到的時候只需要傳u一個路由數(shù)組就可以了。所以我們的組件邏輯應(yīng)該如下:

import { Component, Input } from '@angular/core';
import {Breadcrumb} from "../../../interfaces/index"
import { Router, RouterLink } from '@angular/router'
@Component({
  selector: 'app-nav-breadcrumb',
  templateUrl: './nav-breadcrumb.component.html',
  styleUrls: ['./nav-breadcrumb.component.css']
})
export class NavBreadcrumbComponent {
  @Input() routeList: Breadcrumb[] =[]
  constructor(private router:Router){

  }

}


// 這里是Breadcrumb接口的類型

//export interface Breadcrumb{
//    path?:string,
//    name?:string,
//    isClick?:boolean
//}

再回頭看看我們這個組件的頁面結(jié)構(gòu):

<nz-breadcrumb-item *ngFor="let item of routeList"> 
             <ng-container *ngIf="item.isClick;else lastBreadCrumb">
                <a [routerLink]="[item.path]">{{item.name}}</a>
            </ng-container>
            <ng-template #lastBreadCrumb>
               {{item.name}}
            </ng-template>  
 </nz-breadcrumb-item> 

到這里會報一個錯:‘Can't bind to 'routerLink' since it isn't a known property of 'a'.

那是因為我們這里做路由跳轉(zhuǎn),routerLink指令需要路由模塊做支持,所以我們還需要引入routermModule

angular中如何定義一個全局組件?,angular,angular.js,前端,javascript

第四步:我們只需要在對應(yīng)的頁面中引入導(dǎo)航數(shù)組即可:文章來源地址http://www.zghlxwxcb.cn/news/detail-659195.html

import { Component, OnInit } from '@angular/core';
import { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { ApiService } from '../../api.service';
import {replaceStringsWithBooleans} from "../../../utils/utils"
import {Breadcrumb} from "../../../interfaces/index"
@Component({
  selector: 'app-store-generate',
  templateUrl: './store-generate.component.html',
  styleUrls: ['./store-generate.component.css']
})
export class StoreGenerateComponent implements OnInit{
  
  validateForm:FormGroup
  
  breadcrumbList:Breadcrumb[]
  
  constructor(private fb:FormBuilder,private http:ApiService){

    this.breadcrumbList=[
      {path:'/storelist/storelist',name:"店鋪列表",isClick:true},
      {path:'storeGenerate',name:"創(chuàng)建店鋪",isClick:false},
    ]

    
  }
  ngOnInit(){
    this.validateForm.get("isNeed")?.valueChanges.subscribe(value=>{
      console.log("value",value)
    })
  }
 

 
}

到了這里,關(guān)于angular中如何定義一個全局組件?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • webpack如何把dist.js中某個模塊js打包成一個全局變量,使得在html引入dist.js后可以直接訪問

    webpack如何把dist.js中某個模塊js打包成一個全局變量,使得在html引入dist.js后可以直接訪問

    webpack可以通過使用expose-loader來將模塊中的一個js文件暴露為全局可以訪問的變量。下面是一個示例代碼: 1、安裝expose-loader npm install expose-loader --save-dev 2、webpack.config.js配置文件 值得注意的是:我在本地使用16.14.2版本的node打包時會報一些警告,升級node18.12.1未報警告,警告

    2024年01月24日
    瀏覽(38)
  • inject: [‘reload‘] 是一個在 Vue.js 組件中常見的語法,用于將父組件中定義的 reload 方法注入到子組件中。

    詳細(xì)解釋如下: inject : 這是 Vue.js 提供的一個選項,允許子組件從父組件中注入數(shù)據(jù)、方法等。 [\\\'reload\\\'] : 這表示子組件想要從父組件中注入名為? reload ?的方法或數(shù)據(jù)。 在給定的代碼片段中, reload ?方法被注入到了子組件中,使得子組件可以直接調(diào)用這個方法。這通常用于

    2024年01月19日
    瀏覽(16)
  • JavaScript框架 Angular、React、Vue.js 的全棧解決方案比較

    JavaScript框架 Angular、React、Vue.js 的全棧解決方案比較

    在 Web 開發(fā)領(lǐng)域,JavaScript 提供大量技術(shù)??晒┻x擇。其中最典型的三套組合,分別是 MERN、MEAN 和 MEVN。前端框架(React、Angular 和 Vue)進行簡化比較。 MERN 技術(shù)棧包含四大具體組件: MongoDB:一款強大的 NoSQL 數(shù)據(jù)庫,以靈活的 JSON 格式存儲數(shù)據(jù)。 Express.js:一套極簡但強大的

    2024年02月03日
    瀏覽(32)
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比較

    2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比較

    ??歡迎來到Java學(xué)習(xí)路線專欄~探索2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比較 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:Java學(xué)習(xí)路線 ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實戰(zhàn)項目 AIGC人工智能 ??文章作者技術(shù)和水

    2024年02月11日
    瀏覽(29)
  • 前端框架之爭:Vue.js vs. React.js vs. Angular

    前端框架之爭:Vue.js vs. React.js vs. Angular

    ??歡迎來到Web前端專欄~前端框架之爭:Vue.js vs. React.js vs. Angular ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:架構(gòu)設(shè)計 ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實戰(zhàn)項目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有限,如果

    2024年02月07日
    瀏覽(34)
  • JavaScript保留字和預(yù)定義的全局變量及函數(shù)匯總

    JavaScript保留字和預(yù)定義的全局變量及函數(shù)匯總

    保留字也稱,每種語言中都有該語言本身規(guī)定的一些,這些都是該語言的語法實現(xiàn)基礎(chǔ),JavaScript中規(guī)定了一些標(biāo)識符作為現(xiàn)行版本的或者將來版本中可能會用到的,所以當(dāng)我們定義標(biāo)識符時就不能使用這些了,下面介紹下JavaScript保留

    2024年01月16日
    瀏覽(25)
  • uniapp自定義動態(tài)tabbar及全局掛載底部自定義組件

    本篇文章解決的問題如下: 1:uniapp在pages.json中定義的tabbar,在非tabbar頁面的時候不會顯示,所以自定義了一個tabbar組件。(注意是自定義組件不是官方的custom-tab-bar組件) 2:有些tabbar需要動態(tài)變化,會員登陸前和會員登陸后可能會需要在tabbar上面展示不同的項目,所以要做

    2024年02月02日
    瀏覽(54)
  • Vue定義全局組件的三種方式

    第一種方式 1.1使用 Vue.extend 來創(chuàng)建全局的Vue組件 1.2使用 Vue.component(‘組件的名稱’, 創(chuàng)建出來的組件模板對象) Vue.component 第一個參數(shù):組件的名稱,引用組件的時候,就是一個HTML 標(biāo)簽形式來引入的 第二個參數(shù): Vue.extend 創(chuàng)建的組件 ,其中 template 就是組件將來要展示的HTML內(nèi)容 1

    2024年02月07日
    瀏覽(23)
  • Vue2封裝自定義全局Loading組件

    Vue2封裝自定義全局Loading組件

    前言 在開發(fā)的過程中,點擊提交按鈕,或者是一些其它場景總會遇到Loading加載框,PC的一些UI庫也沒有這樣的加載框,無法滿足業(yè)務(wù)需求,因此可以自己自定義一個,實現(xiàn)過程如下。 效果圖 如何封裝? 第1步:創(chuàng)建要封裝成全局組件的文件 第2步:注冊組件 Loading這類的通用

    2024年02月15日
    瀏覽(26)
  • Angular中懶加載一個模塊并動態(tài)創(chuàng)建顯示該模塊下聲明的組件

    Angular中懶加載一個模塊并動態(tài)創(chuàng)建顯示該模塊下聲明的組件

    環(huán)境: Angular 13.x.x angular中支持可以通過路由來懶加載某些頁面模塊已達到減少首屏尺寸, 提高首屏加載速度的目的. 但是這種通過路由的方式有時候是無法滿足需求的. 比如, 點擊一個按鈕后顯示一行工具欄, 這個工具欄組件我不希望它默認(rèn)打包進 main.js , 而是用戶點按鈕后動態(tài)

    2024年01月20日
    瀏覽(46)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包