我使用 Angular 自己的日期管道来格式化日期。然而,当涉及到特定日期时,我发现了一个错误:2022 年 1 月 1 日。
如果您访问= https://stackblitz.com/edit/angular-ivy-qrnysm?file=src%2Fapp%2Fapp.component.ts
你会看到我有 2 个日期:
2022-01-01和2022-01-02。在模板中,他们都使用| date:'dd/MM/YYYY':'GMT'. 但第一个日期格式为= 01/01/2021(错误年份),但第二个日期格式为02/01/2022(正确年份)。
还有其他人经历过吗?这是 stackblitz 中的代码:
formattedIssueDate1: Date = new Date("2022-01-01T00:00:00Z");
formattedIssueDate2: Date = new Date("2022-01-02T00:00:00Z");
<p>
This is date 1: {{formattedIssueDate1 | date:'dd/MM/YYYY':'GMT'}}
</p>
<p>
This is date 2: {{formattedIssueDate2 | date:'dd/MM/YYYY':'GMT'}}
</p>
Run Code Online (Sandbox Code Playgroud) 我最近注意到在升级我的 rxjs 版本后,您不能再像下面那样使用该.next()方法:this.ngUnsubscribe$.next();
export class TakeUntilComponent implements OnDestroy {
// Our magical observable that will be passed to takeUntil()
private readonly ngUnsubscribe$: Subject<void> = new Subject<void>();
// Our subject that we will subscribe to
subjectA$: Subject<number> = new Subject<number>();
constructor() {
this.subjectA$
.pipe(takeUntil(this.ngUnsubscribe$))
.subscribe(value => {
// logic goes here ...
});
}
ngOnDestroy(){
// Emit a value so that takeUntil will handle the closing of our subscriptions;
this.ngUnsubscribe$.next();
// Unsubscribe from our unsubscriber to avoid creating …Run Code Online (Sandbox Code Playgroud) 我看了很多帖子,但没有完全按照我的意愿去做.我有一张超出页面宽度的桌子,由于各种原因我需要得到它的宽度.
我用了:
@ViewChild('tableToMeasure') elementView: ElementRef;
Run Code Online (Sandbox Code Playgroud)
然后将#tableToMeasure放在桌面上.然而,这似乎是错误的:
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'nativeElement' of undefined
Run Code Online (Sandbox Code Playgroud)
即使这适用于页面的父div,也只能在页面的父div上工作.
有任何想法吗?我需要在页面加载和页面调整大小上获得它的宽度,并将另一个divs宽度更改为相同的值.
如果你需要在HTML5画布上的不同层上工作,最好的方法是什么?我看到有些人决定使用position:absolute将多个画布叠加在一起.这是最好的方法吗?
我想应用点击功能:
setPage(page - 1)
Run Code Online (Sandbox Code Playgroud)
但只有在这种情况符合时:
page > 1
Run Code Online (Sandbox Code Playgroud)
我以为我可以这样做,但它不起作用,任何想法?
<a (click)="{'setPage(page - 1)' : page > 1}">Previous</a></li>
Run Code Online (Sandbox Code Playgroud) 正如它所说,在Phaser.js中,如何为组内的每个对象应用一个动作.我想对每个项目应用以下行:
game.physics.arcade.collide(something, platforms);
game.physics.arcade.overlap(player, something, gameOver, null, this);
something.body.velocity.x = -120;
Run Code Online (Sandbox Code Playgroud)
"Something"是对象名称,但我的组名称为"obstacleGroup".我想这样做,因为我有另一个功能一直向组创建新对象,所以我不一定知道它们被称为什么.
我是外部页面内容的AJAXing.大多数情况下,负载不到一秒钟,但有没有一种方法我可以淡入div(假设一个预加载div),如果说负载超过3秒就会出现?所以像这样......
$targetPoint.load($dataImportURL + " " +$rawCollectionPoint,function(){
if (($(this).load >= 3))
{
alert ("Its taken more than 3 seconds to load");
}
});
Run Code Online (Sandbox Code Playgroud) 我已经成功构建了一个反应式表单,但我希望使用自定义管道对结果进行排序:
<tr *ngFor="let record of myForm.controls.openingHoursForm.controls | sort: 'When'; let c=index; let first = first; let last = last;" [formGroupName]="c">
<td><input type="text" formControlName="Heading" class="openingTimesField" /></td>
<td><input type="text" formControlName="Subheading" class="openingTimesField" /></td>
<td><input type="text" formControlName="When" class="openingTimesField" /></td>
<td><input type="text" formControlName="Times" class="openingTimesField" /></td>
<td><input type="text" formControlName="Emphasis" class="openingTimesField" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我的自定义管道如下所示:
import { Pipe } from "@angular/core";
@Pipe({
name: "sort"
})
export class ArraySortPipe {
transform(array: Array<string>, args: string): Array<string> {
if (array !== undefined) {
console.log(array);
array.sort((a: any, b: any) => {
if …Run Code Online (Sandbox Code Playgroud) 我有一个屏幕,我想根据角度计算下一个x和y。第一个足迹是从第1步开始的示例。如何计算下一个足迹,在该足迹上我要增加120,而旁边的足迹需要编织进出约60。
请记住,起点可以是x = 100,y = 100,角度为180,因此足迹必须沿着y轴上移。
我尝试了以下Javascript,但足迹似乎很困惑:
this.startingFootPrintX = Math.floor(Math.random() * 1000) + 20; //Random number between 20 and 1000
this.startingFootPrintY = Math.floor(Math.random() * 560) + 20; //Random number between 20 and 560
this.startingAngle = Math.floor(Math.random() * 340) + 20; //Random number between 20 and 340
startFootSteps();
startFootSteps(){
console.log(this.startingFootPrintX);
console.log(this.startingFootPrintY);
this.startingFootPrintX = Math.round(Math.cos(this.startingAngle * Math.PI / 180) * 120 + this.startingFootPrintX);
this.startingFootPrintY = Math.round(Math.sin(this.startingAngle * Math.PI / 180) * 60 + this.startingFootPrintY);
setInterval(function () {
startFootSteps();
}, 3000);
}
Run Code Online (Sandbox Code Playgroud) angular ×6
javascript ×4
typescript ×2
geometry ×1
html5 ×1
html5-canvas ×1
jquery ×1
load ×1
math ×1
rotation ×1
rxjs ×1
trigonometry ×1