Skip to content

Instantly share code, notes, and snippets.

import {Directive, Input} from '@angular/core';
import {NgControl} from '@angular/forms';
@Directive({
selector: '[disableControl]',
})
export class DisableControlDirective {
@Input()
set disableControl(disabled: boolean) {
const method = disabled ? 'disable' : 'enable';
import { SimpleChanges } from '@angular/core';
export function AsyncInput(inputName?: string) {
return (target, rxInputName: string) => {
inputName = inputName || rxInputName.slice(0, -1); // Remove '$' ('data$' => 'data')
const oldOnChanges = target.ngOnChanges;
const oldOnDestroy = target.ngOnDestroy;
target.ngOnChanges = function(changes: SimpleChanges) {
const inputChange = changes[inputName];
import {
Component,
Input,
OnChanges,
SimpleChanges,
OnDestroy,
} from '@angular/core';
import {
MatDialogRef,
MatDialogConfig,
@mfp22
mfp22 / logo.component.ts
Created July 10, 2023 06:43
Reactive Dragon Blinking and Running
import { CommonModule, NgClass } from '@angular/common';
import { Component } from '@angular/core';
import { UntilDestroy } from '@ngneat/until-destroy';
import { concat, timer } from 'rxjs';
import { delay, map, repeat, startWith, takeWhile, tap } from 'rxjs/operators';
@UntilDestroy()
@Component({
selector: 't-logo',
standalone: true,
@mfp22
mfp22 / migrate-folder-to-lib.js
Last active May 14, 2024 03:00
node.js script to create Nx library and move folder into it
const fs = require('fs');
const path = require('path');
const exec = require('child_process').exec;
const ts = require('typescript');
const tsHost = ts.createCompilerHost(
{
allowJs: true,
noEmit: true,
isolatedModules: true,