Does Angular Support Generic Component Types?
You may be familiar with writing Typescript Generics like Grid<IRowData> but how does this work...
Code Refactoring with Regex Find and Replace
When faced with a major refactoring task across your codebase don't forget you can use Regexes to do...
Write Typescript in the browser with SystemJs
(This post is just a rough public note about a side effect of some of my work. May or may not be...
VS Code: It's taking a while to configure your breakpoints"
I love using VS Code to run and debug local scripts. However, I had noticed that starting up the task...
Understanding async tests in Angular
If you are testing an Angular application, then at some point, you will be required to test...
Use Arrow function, () => {}, to correctly bind this
As part of my role working for AG Grid I get to see a number of repeated issues. One such issue that...
Use npm pack to test your packages locally
When working with npm packages you often want to test your package without having to publish it to...
Setting up a Certificate for localhost
(This post is mainly a public note for myself but maybe will help others too.) Self Signed...
Adding a layer of more explicit typings on top of 3rd party library interfaces
You may have noticed that the typing provided by 3rd party libraries often feels very loose. This sho...
ngTemplateOutlet: The secret to customisation
ngTemplateOutlet is a powerful tool for creating customisable components. It is used by many Angular...
Understanding ngrx/component-store debounceSync()
In the previous post we looked at the debounce option for @ngrx/component-store selectors and how it...
Understanding @ngrx/component-store Selector Debouncing
@ngrx/component-store selectors have a debounce option that lets the state settle before emitting....
Regex search and replace with VS Code
I wanted to upgrade ag-grid across a number of apps. Standard search and replace did not work due to...
NgRx 9: Introducing strictActionWithinNgZone runtime check
NgRx 9 brings us a brand new runtime check: strictActionWithinNgZone. If enabled, this check will hig...
NgRx Selector Performance
NgRx selectors promise performance gains via memoization. However, we must take care when defining...
Change Detection: Getting in the (Angular) Zone!
Who knew an event binding in one component could cause a display bug in another? We will explain the...
Introducing TestCases to Typescript
I want to test a Typescript function with lots of varied inputs to ensure good coverage. How do I go...
Restructure with ease thanks to Typescript path mappings
The hardest part about restructuring a Typescript project is updating all the import paths. While...
Change Detection: When using setTimeout() is not your best option
If you have been working with Angular then the chances are pretty high that you have run into the...
My Journey to AngularConnect 2019
Last month I gave my first major conference talk at AngularConnect! It was an incredible experience...