Skip to content

Instantly share code, notes, and snippets.

View gparlakov's full-sized avatar

Georgi Parlakov gparlakov

  • Sofia, Bulgaria
View GitHub Profile
@gparlakov
gparlakov / ifFeatureFlag.ts
Last active October 20, 2021 11:42
iFFeatureFlag - add support for else template
@Directive({
selector: '[ifFeature]',
})
export class IfFeatureFlagDirective<IfTemplate, ElseTemplate> {
// assume flags, viewContainerRef, TemplateRef ...
private flag: string;
private elseTemplate: TemplateRef<ElseTemplate>;
@Input('ifFeature')
set ifFeature(f: string) {
@gparlakov
gparlakov / use-if-feature-flag.html
Created October 20, 2021 10:45
ifFeatureFlag like this
<div *ifFeature="'myNewFeatureFlagOn'; else dontShowMyFeature">My new feature (beta)</div>
<ng-template #dontShowMyFeature>Coming soon...</ng-template>
@gparlakov
gparlakov / initial.html
Created October 20, 2021 10:43
iffeatureflag initial html
<div *ngIf="myNewFeatureFlagOn$ | async">My new feature (beta)</div>
@gparlakov
gparlakov / featureFlag.ts
Created October 10, 2021 17:57
Naive implementation of ifFeatureFlagDirective
@Directive({
selector: '[ifFeature]',
})
export class IfFeatureFlagDirective<IfTemplate, ElseTemplate> {
// assume flags, viewContainerRef, TemplateRef ...
@Input('ifFeature')
set ifFeature(f: string) {
if(this.flags[f]) {
this.viewContainerRef.createEmbeddedView(this.template);
This example shows how to apply functions to file names.
Functions from https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/core/src/utils/strings.ts
@gparlakov
gparlakov / bill-payment.component.ts
Created September 5, 2020 16:43
Provider instead of page dependency
class BillPaymentComponent {
bills$: Observable<BillRow[]>;
loading$: Observable<boolean>;
selected: BillRow[] = [];
constructor(private provider: PaymentProvider) {}
ngOnInit() {
this.bills$ = this.provider.bills$;
class BillPaymentComponent {
bills$: Observable<BillRow[]>;
loading$: Observable<boolean>;
selected: BillRow[] = [];
constructor(page: BillPaymentPage) {}
ngOnInit() {
this.page.onPageEnter();
class UserProfilePage {
user$: Observable<User>;
deleteDialog$: Observable<boolen>;
deleteDisclaimer$: Observable<string>;
onPageEnter(userId: string) {
// fetch the user and emit user$ -> User
}
@gparlakov
gparlakov / add.sh
Last active April 24, 2023 13:12
Add angular apps of a specific version
# these versions are current as of May 18th 2021
# info from https://www.npmjs.com/package/@angular/cli -> Versions
#Angular 2: looks like this is the last RC version before switching to angular 4
npx -p @angular/[email protected] ng new angular2app
#Angular 4: the last CLI version before Angular 5
npx -p @angular/[email protected] ng new angular4app
#Angular 5: the last CLI version before Angular 6
@gparlakov
gparlakov / token.sh
Created April 26, 2020 19:57
bash script to make the NPM PAT available to the NPM CLI
cd ./my-package/package
echo '[Action] logging package files'
ls
echo '[Action] adding token to npmrc'
echo '//registry.npmjs.org/:_authToken=$(token)' > .npmrc
npm publish --tag next