Skip to main content

Review old/new stuff: Angular 17

When I reviewed Angular recently, I discovered that it had just undergone a major revision three months ago, v17.

The notes here are summaries of common features incorporated into v17.

Install Angular

npm install -g @angular/cli

Create new project

ng new proj_name
cd proj_name
If the old project needs to be migrated to v17 control flow:

ref: https://youtu.be/36Hcx7kRYDg?si=pmZcRkQHIlmguK3K

ng generate @angular/core:control-flow

Activate 

ng serve

Data Flow

ref: https://angular.io/tutorial/first-app/first-app-lesson-09

Service can be regarded as a custom class (similar to custom modules written in expressJS)

ng generate service obj_name

In the sample program, enumeration of array is used.

this.housingLocationList.find(housingLocation => housingLocation.id === id); 

The concept is 

find( function(element) => { return (condition; )})

ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

ref: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html


Routing

ref: https://angular.io/tutorial/first-app/first-app-lesson-11

on HTML, build a URL with parameter:

<a [routerLink]="['/details', housingLocation.id]">Learn More</a>

on route file, define the URL structure:

path: 'details/:id',

on .ts file, get parameter from URL:

import { ActivatedRoute } from '@angular/router';
// in class
route: ActivatedRoute = inject(ActivatedRoute);
const housingLocationId = Number(this.route.snapshot.params['id']);


Skeleton Sample: https://github.com/atfuture7/testcode/tree/master/nodejs/12_angular_route/src

Form

Form's file structure is relatively simple.

ref: https://angular.io/tutorial/first-app/first-app-lesson-12

ref: https://angular.io/guide/reactive-forms

It should be noted when debugging that it cannot be debugged using console.log(). Maybe it's because this project uses server-side render. From the test example in ref: "Reactive forms", we can know that user input and web page response are almost synchronized. Perhaps this makes it difficult for console.log() to determine the starting point. In this project, I use the message to be displayed on the web page as a debugging message.

Create an Angular form, set the positions of the angular formgroup and formControl, and then you can receive the data entered by the user. Another thing to note is that if the HTML Input has a name, its name must be the same as formControlName.


sample: https://github.com/atfuture7/testcode/tree/master/nodejs/13_angular_form

Use custom JavaScript

JavaScript defined in the html template will be removed during Angular build. If you want to execute customized js on the web page, you need

  • - Save as js file
  • - Included in scripts list in angular.json
  • - (optional) Initialize in class: ngOnInit() of .ts.
In addition, form inputs that are not written in the html template will not be pre-processed by angular build. It will also cause input to not be listed as an object processed by formControl, even if the attribute is additionally set.

Comments

Popular posts from this blog

Bookmark service (MongoDB & Spring REST) -2/2

    I accidentally deleted my development VM. I got lucky having the habit of taking notes. This blog is useful. Development VM is doom to be lost. Rebuild it waste time, but having a clean slate is refreshing~. What concerns me more is my AWS free quota this month is reaching 85%. The second VM I launched but never being used might be the one to blame. (Of course, my mistake.) I terminated the wrong VM. Now I got Linux 2 built. Great, just threw away everything happened on AMI.  1st layer: Page Page class   Originally, I need to prepare getter/setter for all class properties for Spring. By using lombok, I only need to create constructors. lombok will deal with getter/setter and toString(). But there are chances to call getter/setter, but how? .......Naming convention.... Capitalize the 1st character with the prefix get/set.  Annotation @Data was used on this class.  Repository class Spring Docs: Repository https://docs.spring.io/spring-data/mongodb/docs/3....

Guide to Preserving HuggingFace Models in Google Colab Environments

Conclusion:  Step 1:  find the model path: ls ~/.cache  Step 2:  Copy the entire folder to Google Drive:  Step 3:  Set model path to the subfolder under snapshot: My Story: I initially began exploring Generative AI (GAI) and Google Colab through Stable Diffusion. In the past, as I mainly wrote server services and console applications, I was less familiar with data science modes like R and Jupyter that can maintain a paused state. I didn't quite understand the heavy burden on Colab of creating a temporary Stable Diffusion WebUI with .ipynb, as suggested by popular guides. I just found it troublesome that connections often took a long time and then dropped, requiring a restart. Recently, while testing new versions of the Stable Diffusion model, and facing challenges due to Colab's policies making various versions of WebUI difficult to run successfully, I started researching how to write my own test programs in Colab. Eventually, I understood that Colab is ess...

Setup Maven and two basic projects

    The interesting implementation of Java I proceed to is Spring. And, only getting Java running is not enough. I also need to set up Maven. This name is new to me, and I found many Spring tutorials just skip this part. At least I need Maven to generate templates for me. I should learn it more. ( I knew there is a great tool -- Eclipse -- can make tedious things disappear. I’m taking a strategy to install all experiments I want to try and throw away when it's full. And that's an external VM, not my PC. I, not yet, want to do research about installing Eclipse on AMI. )    Upgrade to Java 8     First is to upgrade Java on AMI to Java8. AWS provides advanced tools for Linux 2. And DIY for Linux2. At least there are solutions for my choice.  Amazon Corretto 8 Installation Instructions for Amazon Linux 2 https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/amazon-linux-install.html Here are commands I used: >wget */amazon-corretto-8-x64-linux-jdk.d...