gpt4 book ai didi

javascript - 在路由 Angular2 之前运行代码

转载 作者:太空宇宙 更新时间:2023-11-04 16:11:53 24 4
gpt4 key购买 nike

我目前正在 Angular2 中构建一个应用程序,主屏幕如下:

Image of homescreen

<div id="freewall" class="free-wall" data-min-width="1840" data-total-col="5" data-total-row="4" data-wall-width="1873" data-wall-height="800" style="position: relative; height: 800px;">
<div *ngFor="let block of blokken | async" [@animState]="block.state" (click)="block.toggleState()" [ngClass]='block.color' class='blockexnr{{block.id}} live-tile cell tile2' data-mode='slide' style.height="{{block.height}}px" style.width="{{block.width}}px"
style='display: none;'>
<div>
<p class='full' href='#' class="blocknr{{block.id}}">{{block.tekst1}}</p>
</div>
<div data-mode='carousel' data-start-now='true' class='title2 live-tile' data-direction='horizontal' data-delay='3000'>
<div class="blocknr{{block.id}}">
<p>{{block.textCar[0]}}</p>
<img class='products' src='{{block.imgCar[0]}}' />
</div>
<div *ngIf="block.amountCar > 1" class="blocknr{{block.id}}">
<p>{{block.textCar[1]}}</p>
<img class='products' src='{{block.imgCar[0]}}' />
</div>
<div *ngIf="block.amountCar > 2" class="blocknr{{block.id}}">
<p>{{block.textCar[2]}}</p>
<img class='products' src='{{block.imgCar[0]}}' />
</div>
<div *ngIf="block.amountCar > 3" class="blocknr{{block.id}}">
<p>{{block.textCar[3]}}</p>
<img class='products' src='{{block.imgCar[0]}}' />
</div>
<div *ngIf="block.amountCar > 4" class="blocknr{{block.id}}">
<p>{{block.textCar[4]}}</p>
<img class='products' src='{{block.imgCar[0]}}' />
</div>
<div *ngIf="block.amountCar > 5" class="blocknr{{block.id}}">
<p>{{block.textCar[5]}}</p>
<img class='products' src='{{block.imgCar[0]}}' />
</div>
</div>

</div>

正如您所知,它循环遍历一个包含 20 个项目的列表,称为 blokken。还有一个动画,叫做@animState,可以通过点击(click)时调用的函数来激活它。这就是那个函数:

 toggleState() {
var numberofblock = this.id;
var n = ".blocknr" + numberofblock.toString();
var n2 = ".blockexnr" + numberofblock.toString();

console.log(n);
console.log(n2);
$(n).html("");
$(".cell").not(n2).css("z-index", -1);

this.state = (this.state === 'active' ? 'inactive' : 'active'); }

该函数将 block 的状态更改为事件,并且以此方式该 block 会扩展:

trigger('animState', [
state('inactive', style({
transform: 'scale(1)'
})),
state('active', style({
transform: 'scale(10)'
})),
transition('inactive => active', animate('2000ms ease-in')),
])

这一切都工作得很好,但我真正想要发生的是,当单击一个 block 时,它会缩放,然后路由到一个新页面。但是当我添加[routerLink]时,它根本不会转到toggleState()函数,它所做的只是路由到新组件。

我还尝试了 @routeAnimation 动画,但其中的动画适用于整个组件 - 而不仅仅是一个 div - 这不是我想要的。

我在谷歌上搜索并没有取得多大成功,我唯一发现的是我可以使用解析器,但我对此也不太确定。

有人可以帮助我完成这项工作吗(所以当单击一个 block 时,这是事情的顺序:

  1. 点击该 block
  2. 转到toggleState()函数
  3. 执行 1 block (您点击的 block )的缩放动画
  4. 路由到新组件。

我希望有人能帮助我解决这个问题。谢谢!

最佳答案

如果有人在这篇文章中遇到过困难,那实际上非常简单。

唯一需要的是

constructor(private router: Router){}

this.router.navigate(["/LINK"]);

所以我只需要使用 this.router 调用一个函数,就是这样。这样就不需要 [routerLink]。

关于javascript - 在路由 Angular2 之前运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41407708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com