第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

角度渲染組件首先,然后在 ng-If 中刪除另一個(gè)組件

角度渲染組件首先,然后在 ng-If 中刪除另一個(gè)組件

侃侃無(wú)極 2022-09-29 17:54:59
我使用ngif指令一次顯示一個(gè)組件。<app-root>   <first-Comp *ngIf="showFirst"></first-Comp>   <second-Comp *ngIf="!showFirst"></second-Comp></app-root>要點(diǎn)是顯示第一變量使用 true 進(jìn)行初始化。第一合成包含高度為100px的元素;第二比較有動(dòng)態(tài)元素在第二個(gè)組件內(nèi)部,我使用內(nèi)部計(jì)算高度document.body.scrollHeightngOnInit問(wèn)題是當(dāng) 變?yōu)榻菚r(shí),首先呈現(xiàn)第二個(gè)合成,然后刪除 .結(jié)果,我得到的高度是100+而不是0。但是我需要身體的高度,只在組件渲染。showFristfalsefirst-compsecond-comp我錯(cuò)過(guò)了另一件重要的事情,因?yàn)槲艺J(rèn)為這可能不會(huì)妨礙。即第一個(gè)和第二個(gè)組件都與角度自動(dòng)變化檢測(cè)分離以提高性能。我有一個(gè)這樣的基本組件export class BaseComponent {private subscriptions: Subscription[] = [];  constructor(private childViewRef: ChangeDetectorRef) {      this.childViewRef.detach();  }  public updateUI(): void {    try {        this.childViewRef.reattach();        this.childViewRef.detectChanges();        this.childViewRef.detach();    } catch (ex) {        // ignored    }  }  protected addSubscriptions(subs: Subscription) {    this.subscriptions.push(subs);  }  protected unSubscribeSubscriptions() {    this.subscriptions.forEach(item => item.unsubscribe());    this.subscriptions = [];  }}除應(yīng)用程序組件外,所有組件都繼承此基本組件,因此第二組件的代碼如下所示。@Component({  selector: 'second-comp',  templateUrl: './SecondComponent.component.html',  styleUrls: ['./SecondComponent.component.css'],  changeDetection: ChangeDetectionStrategy.OnPush})export class SecondComponent extends BaseComponent implements OnInit, AfterViewInit{   constructor(private ref:ChangeDetectorRef){     super(ref);     }   ngAfterViewInit(): void {     this.updateUi();     this.publishHeight()   }   ngOnInit() {    this.updateUi();    this.publishHeight()   }}有什么不對(duì)嗎,我得到了這種意想不到的行為。
查看完整描述

3 回答

?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

計(jì)算在 ngOn 初始化內(nèi)的第二次合成中設(shè)置超時(shí)() 中的高度

 setTimeout(() => { 
          //calculateHeight()  
        }, 200);



查看完整回答
反對(duì) 回復(fù) 2022-09-29
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

感覺(jué)你做錯(cuò)了。您可以在第二復(fù)合構(gòu)造函數(shù)中注入@Self,它將為您提供自身的元素Ref(第二復(fù)合)。


constructor( @Self() private element: ElementRef ) {}

它可能不起作用,但不會(huì)受到第一次競(jìng)爭(zhēng)的影響


ngOnInit() {

    this.element.nativeElement.offsetHeight //the height for whatever you need it for

}


查看完整回答
反對(duì) 回復(fù) 2022-09-29
?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

您應(yīng)該計(jì)算組件視圖完全呈現(xiàn)時(shí)的高度。這意味著計(jì)算 ng 內(nèi)部的高度后查看初始化() 鉤子。請(qǐng)參閱 https://angular.io/api/core/AfterViewInit


查看完整回答
反對(duì) 回復(fù) 2022-09-29
  • 3 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)