<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: VCIDevTeam</title>
    <description>The latest articles on DEV Community by VCIDevTeam (@vcldev).</description>
    <link>https://dev.to/vcldev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1009517%2F745dda6f-8d9c-4e56-897b-4f6355e31800.png</url>
      <title>DEV Community: VCIDevTeam</title>
      <link>https://dev.to/vcldev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vcldev"/>
    <language>en</language>
    <item>
      <title>Mastering the Windows Registry: The mysterious world behind the system</title>
      <dc:creator>VCIDevTeam</dc:creator>
      <pubDate>Mon, 26 Jun 2023 04:16:36 +0000</pubDate>
      <link>https://dev.to/vcldev/mastering-the-windows-registry-the-mysterious-world-behind-the-system-i8g</link>
      <guid>https://dev.to/vcldev/mastering-the-windows-registry-the-mysterious-world-behind-the-system-i8g</guid>
      <description>&lt;p&gt;Windows Registry is an important database on the Windows operating system, which stores configuration and customization information of the system and the applications on it. It plays an important role in maintaining system stability and performance. On each version of Windows, the Registry always plays an important part in managing and adjusting the system's components. In this article, we are going to explore in more depth the Windows Registry, how it works, and how to take advantage of it effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What is the Windows Registry?
&lt;/h2&gt;

&lt;p&gt;The Windows Registry is a hierarchical database used to store configuration information for the Windows system and the applications on it. It contains keys and values organized into a hierarchical tree structure, helping users and the operating system to access and change important information.&lt;br&gt;
In addition, the Registry also supports a multi-profile structure that stores user settings, each user will have a different profile specific to their account, for example, user A installs Unikey to start with Windows, and other use B, do not install that program, Registry will record these and save each user's folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Structure of the Windows Registry
&lt;/h2&gt;

&lt;p&gt;The Windows Registry is organized into many hives and subkeys within them. The most important entries in the Registry include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;HKEY_CLASSES_ROOT (HKCR): contains information about file types and their respective utilities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HKEY_CURRENT_USER: stores configuration information for the currently logged-in user&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HKEY_LOCAL_MACHINE: contains configuration information for specific computers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HKEY_USERS: store configuration information for all users on the system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HKEY_CURRENT_CONFIG: contains information about the current hardware configuration&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each entry in the Registry contains keys. Keys are directories in the Registry tree and can contain subkeys and values. The key is usually named after the path, e.g. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows&lt;br&gt;
Each key in the Registry can contain one or more values. Values are specific information stored in the key and are used to store configurations and customizations. Values can be of different data types such as string, integer, boolean (true/false), binary, and many other data types.&lt;br&gt;
For example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7iCaXCYn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6v8a2scfp1pa3lqt32n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7iCaXCYn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6v8a2scfp1pa3lqt32n.png" alt="Image description" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HKCU\Software\Microsoft\Windows\CurrentVersion\Run contains a series of values that are executable files that are started automatically when the user logs on. The root key is HKCU (HKEY_CURRENT_USER), which stores the Subkeys: SOFTWARE, Microsoft, Windows, CurrentVersion, and Run. And the Run key contains the Values. With each root key in particular and keys in general, only certain software will be able to access it for security reasons. Therefore, each user, software, and service will only see the keys that they are allowed to see.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The structure of the Windows Registry allows applications and systems to access and store configuration and customization information in an organized and efficient manner, understanding this structure helps users and developers understand and interact with the Registry correctly and securely.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. How Windows Registry Works
&lt;/h2&gt;

&lt;p&gt;When the Windows system boots, the Registry is loaded into memory. When applications are active, they will access and change the Registry to get system configuration information or store new information. Here are the basic operations of the Registry:&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration storage
&lt;/h3&gt;

&lt;p&gt;When the Windows system is up and running, it reads and writes configuration information to the Registry. This includes system configurations such as network settings, graphics configurations, audio configurations, and more. Each application can also store its configurations in the Registry.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access and modify the Registry
&lt;/h3&gt;

&lt;p&gt;Windows applications and systems can access the Registry through APIs provided by the operating system. This API allows applications to read, write, edit, and delete keys and values in the Registry. Applications can access and update the Registry to get configuration information, customize behavior, or change settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Backup and restore
&lt;/h3&gt;

&lt;p&gt;Windows provides a Registry Editor (regedit) tool to access and manage the Registry. It allows users to backup and restore the Registry, to ensure the stability and safety of the system. It is very important to back up the Registry before making changes so it can be restored to the previous state if necessary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interaction with applications and systems
&lt;/h3&gt;

&lt;p&gt;Information in the Registry is used by applications and systems to obtain configurations and custom settings. When an application or system needs to access a value in the Registry, it can query the corresponding key and value to get the necessary information.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Using Windows Registry
&lt;/h2&gt;

&lt;p&gt;Windows Registry plays an important role in customizing and tuning the Windows system. Users can access the Registry through the Registry Editor, a built-in tool in the Windows system that allows them to change configuration parameters, disable or enable features, and customize the behavior of the system and applications. In addition, you can use third-party tools to manage and optimize the Registry, to increase system performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ULkCPkzy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z87kv66u688re6kqig72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ULkCPkzy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z87kv66u688re6kqig72.png" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Optimize and Repair Windows Registry
&lt;/h2&gt;

&lt;p&gt;Windows Registry can become large and complex after a period of use, which can affect the performance of the system. To keep the Registry working optimally, there are several possible optimization and repair methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove redundant keys and values: during the use of the system, there may be keys and values that are no longer needed. Deleting them will reduce the size of the Registry and improve system performance. However, be careful and only delete keys and values that you understand well and don't need.&lt;/li&gt;
&lt;li&gt;Use Registry optimization tools: Many Registry optimization tools are available to help you automatically find and delete redundant keys and values, repair errors, and optimize the structure of the Registry. These tools can save you time and ensure system stability.&lt;/li&gt;
&lt;li&gt;Backup and restore the Registry: before making any changes to the Registry, it is advisable to make a backup copy of it to ensure that you can restore it to its previous state if necessary. Windows provides a Registry Editor tool for backing up and restoring the Registry.&lt;/li&gt;
&lt;li&gt;Repair Registry errors: if the system encounters Registry-related errors, the System File Checker (SFC) tool can be used to check and repair corrupted system files. SFC also can check and repair Registry errors&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Some tricks with the Registry
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Turn off the lock screen
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The lock screen is an added layer of security on a Windows PC that requires a password or PIN for you to sign in again. If you feel safe, then you can turn off the lock screen completely.&lt;/li&gt;
&lt;li&gt;Open the Registry Editor, go to the HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows folder, right-click Windows in the left panel, select New &amp;gt; Key, and name the new Personalization. Select Personalization, then in the right panel, right-click a space and select New &amp;gt; DWORD (32-bit) Value, name the value NoLockScreen, change Value data to 1, and select OK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RkwtMenE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3gthx8390xmk09f9j4tk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RkwtMenE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3gthx8390xmk09f9j4tk.png" alt="Image description" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Turn off “shake” to minimize windows
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Aero Shake is a feature introduced in Windows 7, that allows you to minimize windows by holding the window you want to open and shaking it. To remove it, open Registry Editor and navigate to Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\Current\Version\Explorer\Advanced&lt;/li&gt;
&lt;li&gt;Here, right-click on the right panel, select New &amp;gt; DWORD (32-bit), name it DisallowShaking, change the value to 1, and click OK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jeS08tKb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mhekum5ikmx79o6gv5sn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jeS08tKb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mhekum5ikmx79o6gv5sn.png" alt="Image description" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Add your apps to the context menu
&lt;/h3&gt;

&lt;p&gt;The context menu is interesting, but controlling it requires creating registry keys to add specific applications to it. Here we will take Notepad as an example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;B1: Open regedit, navigate to Computer\HKEY_CLASSES_ROOT\Directory\Background\shell&lt;/li&gt;
&lt;li&gt;B2: in the shell folder, right-click and create a new key named Notepad, which creates a key named command. In the key command folder, right-click the Default string, then in the Value box, type notepad.exe.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Increase network speed
&lt;/h3&gt;

&lt;p&gt;Many of the Registry tweaks on the list will involve design or aesthetic changes that can make Windows smoother and better. But there are also a bunch of registry tricks designed to improve Internet speed. Here are some ways to use the registry to improve Internet speed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;C1: IRPStackSize: navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters, add IRPStackSize as DWORD value on the right side of the regedit window, and modify the value to 32&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;C2: MaxFreeTcbs: navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, create or edit MaxFreeTcbs and set its value to 65536. If you are using an old computer with low-performance hardware, you can set this to a lower number such as 16000.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. References
&lt;/h2&gt;

&lt;p&gt;To learn more about the Windows Registry and how to work with it, here are some helpful resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Microsoft Registry for advanced users: &lt;a href="https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/windows-registry-advanced-users"&gt;https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/windows-registry-advanced-users&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auslogics Registry Cleaner (free registry cleaner): &lt;a href="https://www.auslogics.com/en/software/registry-cleaner/"&gt;https://www.auslogics.com/en/software/registry-cleaner/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to backup and restore the registry in Windows: &lt;a href="https://support.microsoft.com/en-us/topic/how-to-back-up-and-restore-the-registry-in-windows-855140ad-"&gt;https://support.microsoft.com/en-us/topic/how-to-back-up-and-restore-the-registry-in-windows-855140ad-&lt;/a&gt; e318-2a13-2829-d428a2ab0692&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Summary
&lt;/h2&gt;

&lt;p&gt;The Windows Registry is an important component in the Windows system, helping to store system and application configuration and customization information. Understanding and working effectively with the registry can help enhance system performance and stability. However, precautions should be taken and careful editing should be carried out. If you don't have much experience with the registry, get expert help or use reliable registry optimization tools.&lt;/p&gt;

&lt;p&gt;By,&lt;br&gt;
VNPT Cyber Immunity - VCI&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The changes of ISO/IEC 27001:2022</title>
      <dc:creator>VCIDevTeam</dc:creator>
      <pubDate>Fri, 28 Apr 2023 10:03:33 +0000</pubDate>
      <link>https://dev.to/vcldev/the-changes-of-isoiec-270012022-212j</link>
      <guid>https://dev.to/vcldev/the-changes-of-isoiec-270012022-212j</guid>
      <description>&lt;p&gt;The global digital landscape is changing. New business practices and Industry 4.0 have become ubiquitous, and core business practices are increasingly cloud-based and digitally dependent.&lt;br&gt;
In response, the ISO/IEC 27001 Information Security Management standard and the ISO/IEC 27002 controls for Information Security standards are being updated to reflect this development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The change in the Title
&lt;/h2&gt;

&lt;p&gt;After updating, in the ISO/IEC 27001:2022 version, the new title of the standard is "Information security, cybersecurity and privacy protection – Information security management systems – Requirements".&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The change in the Clauses
&lt;/h2&gt;

&lt;p&gt;The clause structure of ISO/IEC 27001:2022 remains the same as in the 2013 version, but some changes have been made to align it with other ISO management standards:&lt;br&gt;
  &lt;em&gt;•  Clause 4.2: Understanding the needs and expectations of interested parties&lt;/em&gt;&lt;br&gt;
A new subclause has been added to require the analysis of which interested party requests will be addressed by the ISMS.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pGR8HaIk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pcro0a67xnglo5ggh9w8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pGR8HaIk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pcro0a67xnglo5ggh9w8.png" alt="Image description" width="479" height="116"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;em&gt;•  Clause 5.3: Organizational roles, responsibilities and authorities&lt;/em&gt;&lt;br&gt;
A minor language update has been made to clarify the scope of communication regarding information security-related roles within the organization.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aHPlqNuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oe3crnmb9a93skka9re3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aHPlqNuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oe3crnmb9a93skka9re3.png" alt="Image description" width="479" height="125"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;em&gt;•  Clause 6.2: Information security objectives and planning to achieve them&lt;/em&gt;&lt;br&gt;
This clause now requires that objectives be regularly monitored and formally recorded.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n5oG48pE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fbzydnr9ps0nrhonwqxl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n5oG48pE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fbzydnr9ps0nrhonwqxl.png" alt="Image description" width="479" height="236"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;em&gt;•  Clause 6.3: Planning of changes&lt;/em&gt;&lt;br&gt;
This new clause establishes a standard for planning changes to the ISMS. It states that if changes are necessary to the ISMS, they must be carried out in a planned.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LcTAovmf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/waurw76bp315bcuuodbk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LcTAovmf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/waurw76bp315bcuuodbk.png" alt="Image description" width="479" height="57"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;•    Clause 7.4: Communication&lt;/em&gt;&lt;br&gt;
Sub-clauses a-c remain the same. But the sub-clauses d (who shall communicate) and e (the processes by which communication shall be affected) have been simplified and combined into a new clause renamed d (how to communicate).&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jbhvnNgp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96uhb2v775js2qtm9a7a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jbhvnNgp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96uhb2v775js2qtm9a7a.png" alt="Image description" width="479" height="135"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;em&gt;•  Clause 8.1: Operational planning and control&lt;/em&gt;&lt;br&gt;
Additional instructions have been added for operational planning and control. ISMS now needs to establish criteria for the actions identified in Clause 6 and control such actions against the criteria.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0ZU3O0tn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gdjux3xn2wf3m93sz6cb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0ZU3O0tn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gdjux3xn2wf3m93sz6cb.png" alt="Image description" width="479" height="122"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;em&gt;•  Clause 9.2: Internal audit&lt;/em&gt;&lt;br&gt;
This clause has been reorganized, but not significantly. Basically, it just separates sub-clauses a and b to create Clause 9.2.1, and the remaining sub-clauses to create Clause 9.2.2.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cqLbniNf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sq836yrot27b9eyles49.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cqLbniNf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sq836yrot27b9eyles49.png" alt="Image description" width="482" height="285"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;em&gt;•  Clause 9.3: Management review&lt;/em&gt;&lt;br&gt;
A new sub-clause has been added to clarify that the organization's management review will include consideration of any changes to the needs and expectations of interested parties.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xw8cdcns--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n8rokjbjppbnyxad0i5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xw8cdcns--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n8rokjbjppbnyxad0i5z.png" alt="Image description" width="479" height="287"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;em&gt;•  Clause 10: Improvement&lt;/em&gt;&lt;br&gt;
This provision has been restructured to list Continuous improvement (10.1) first, followed by Nonconformities and corrective action (10.2).&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The change in the Annex A
&lt;/h2&gt;

&lt;p&gt;The title of this Annex has been changed from "Reference control objectives and controls" to "Information security controls reference", and the standard now uses the term "Purpose" instead of "Objective".&lt;br&gt;
  &lt;em&gt;•  Changing the structure of Controls&lt;/em&gt;&lt;br&gt;
In the new ISO/IEC 27001:2022, this has been reduced from 14 groups to only 4 themes.&lt;br&gt;
   o    Organizational controls: 37 controls.&lt;br&gt;
   o    People controls: 8 controls.&lt;br&gt;
   o    Physical controls: 14 controls.&lt;br&gt;
   o    Technological controls: 34 controls.&lt;br&gt;
 &lt;em&gt;•   The creation of Attributes&lt;/em&gt;&lt;br&gt;
New to this version is the introduction of attributes, denoted by the hashtag symbol (#). These properties can be used to group similar controls. Each organization can create its attributes to meet its needs since these attributes are optional.&lt;br&gt;
   o    Control Type: Preventive, Detective, Corrective.&lt;br&gt;
   o    InfoSec Properties: Confidentiality, Integrity, Availability.&lt;br&gt;
   o    Cybersecurity Concepts: Identify, Protect, Detect, Respond, Recover.&lt;br&gt;
   o    Operational Capabilities: Governance, Asset management, Information protection, Human resource security, Physical security, System and network security, Application security, Secure configuration, Identity and access management, Threat and vulnerability management, Continuity, Supplier relationships security, Legal and compliance, Information security event management, Information security assurance.&lt;br&gt;
   o    Security Domains: Governance and Ecosystem, Protection, Defence, Resilience.&lt;br&gt;
  &lt;em&gt;•  New controls&lt;/em&gt;&lt;br&gt;
Having 11 new controls added to Annex A, the number of newly added controls in each group of controls is detailed below: 5.7, 5.23, 5.30, 7.4, 8.9, 8.10, 8.11, 8.12, 8.16, 8.23, 8.28.&lt;br&gt;
  &lt;em&gt;•  Merged controls&lt;/em&gt;&lt;br&gt;
The latest version, ISO 27001:2022, has merged multiple controls with similar content. Specifically, 56 controls from ISO 27001:2013 have been merged into 24 new controls. As a result, control A.18.2.3 in ISO 27001:2013 now applies to two controls in ISO 27001:2022: 5.36 and 8.8.&lt;br&gt;
  &lt;em&gt;•  Updated controls&lt;/em&gt;&lt;br&gt;
There are 58 control measures that have been updated to be more appropriate and linked together, of which: 24 controls have been renamed and the remaining 34 controls remain the same name, only changed. their numbers and their order.&lt;/p&gt;

&lt;h2&gt;
  
  
  CONCLUSION
&lt;/h2&gt;

&lt;p&gt;ISO/IEC 27001: 2022 has been revised and updated to better suit the current information security situation, specifically:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There are a number of editorial changes, including:&lt;br&gt;
   o    “International Standard” is replaced throughout by “document”.&lt;br&gt;
   o    Rearrange some English phrases to facilitate the standard translation process.&lt;br&gt;
Terms 4 to 10 have some minor changes.&lt;br&gt;
The major changes in the revision are contained in Annex A, reflecting the changes expressed in ISO/IEC 27002:2022. These changes are:&lt;br&gt;
   o    Structure has been consolidated into 4 main areas: Organization, People, Physics and Technology instead of the 14 groups in the previous edition.&lt;br&gt;
   o    Controls listed have been reduced from 114 to 93: No controls have been removed. Some controls have been consolidated, some have been removed, new controls have been introduced, and others have been updated.&lt;br&gt;
   o    New concept of attributes introduced: In line with common terminology used in digital security, these 5 attributes are: Control Type, InfoSec Properties, Cybersecurity Concepts, Operational Capabilities, and Security Domains.&lt;br&gt;
Correspondence of controls in ISO/IEC 27001:2022 with ISO/IEC 27002:2013&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--URsNRENk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xg6dzwhegqkx10rrdkut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--URsNRENk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xg6dzwhegqkx10rrdkut.png" alt="Image description" width="541" height="837"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xKWS7euM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyxlqga85rnhyqy8ptpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xKWS7euM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyxlqga85rnhyqy8ptpd.png" alt="Image description" width="541" height="856"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3JB0vtD2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qe2fjwulg6f2lprqdabm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3JB0vtD2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qe2fjwulg6f2lprqdabm.png" alt="Image description" width="541" height="609"&gt;&lt;/a&gt;&lt;br&gt;
By,&lt;br&gt;
VNPT Cyber Immunity - VCI&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Lifecycle Hooks in Angular</title>
      <dc:creator>VCIDevTeam</dc:creator>
      <pubDate>Tue, 28 Mar 2023 03:02:13 +0000</pubDate>
      <link>https://dev.to/vcldev/lifecycle-hooks-in-angular-34p3</link>
      <guid>https://dev.to/vcldev/lifecycle-hooks-in-angular-34p3</guid>
      <description>&lt;p&gt;Continuing the series of Angular in web application development, in this part 3 we will dive into another special feature in Angular: lifecycle hooks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Lifecycle Hooks?
&lt;/h2&gt;

&lt;p&gt;Lifecycle hooks allow us to connect and run code at a specific lifecycle event of a component or directive.&lt;/p&gt;

&lt;p&gt;Angular is in charge of all the components of directives that it creates, updates, or deletes for us. So with the use of the lifecycle hooks, we can gain better control of our application.&lt;/p&gt;

&lt;p&gt;For that, we use some "hooks" methods with a prefixed of ng to our component or directive. And these "hooks" are split into two different kinds: hooks for components or directives and hooks for child components.&lt;/p&gt;

&lt;h2&gt;
  
  
  The lifecycle
&lt;/h2&gt;

&lt;p&gt;The following are the hooks for components or directives in the usual order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Constructor&lt;/li&gt;
&lt;li&gt;OnChanges&lt;/li&gt;
&lt;li&gt;OnInit&lt;/li&gt;
&lt;li&gt;DoCheck&lt;/li&gt;
&lt;li&gt;OnDestroy
And these are the hooks for the component's children:&lt;/li&gt;
&lt;li&gt;AfterContentInit&lt;/li&gt;
&lt;li&gt;AfterContentChecked&lt;/li&gt;
&lt;li&gt;AfterViewInit&lt;/li&gt;
&lt;li&gt;AfterViewChecked&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FuNENB5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1oghey2gfhgusn1bhig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FuNENB5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1oghey2gfhgusn1bhig.png" alt="Image description" width="362" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So now, we will create a simple example with an input and a button.&lt;/p&gt;

&lt;p&gt;Firstly, create an HTML interface in the app.component!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gTluOVbF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4etlq47jvwbsqetws5y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gTluOVbF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4etlq47jvwbsqetws5y.png" alt="Image description" width="395" height="51"&gt;&lt;/a&gt;&lt;br&gt;
And similarly the OnSubmit handler function in app.component.ts&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KzegKC4U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01c8gxd7tekusxjdii7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KzegKC4U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01c8gxd7tekusxjdii7r.png" alt="Image description" width="389" height="198"&gt;&lt;/a&gt;&lt;br&gt;
Then we instantiate a demo component, this is where we will demo the main lifecycle hooks.&lt;br&gt;
The html file in the demo component.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ea044FjW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mpfeh191s3alq3n9pbt4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ea044FjW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mpfeh191s3alq3n9pbt4.png" alt="Image description" width="424" height="57"&gt;&lt;/a&gt;&lt;br&gt;
The .ts file with the import of the lifecycle hooks we will be using.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kp8hpM_s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/urtt1fjpm5mvg9rl4ix6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kp8hpM_s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/urtt1fjpm5mvg9rl4ix6.png" alt="Image description" width="421" height="213"&gt;&lt;/a&gt;&lt;br&gt;
Call it in the HTML file of the app.component like this.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1RIGc67x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p6z9mib2ibpbnf9syz3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1RIGc67x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p6z9mib2ibpbnf9syz3s.png" alt="Image description" width="421" height="92"&gt;&lt;/a&gt;&lt;br&gt;
And we have a simple interface.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z608GCuI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7aqob5om5e3kg2iinf7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z608GCuI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7aqob5om5e3kg2iinf7y.png" alt="Image description" width="552" height="220"&gt;&lt;/a&gt;&lt;br&gt;
We can see in the console log that the Constructor has been called so we will start with what is the Constructor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Constructor
&lt;/h3&gt;

&lt;p&gt;Constructor is the class's default method when it is first created. Instead of using it to handle the logic in this function, it should be used to define Dependency Injection.&lt;/p&gt;

&lt;h3&gt;
  
  
  NgOnchange
&lt;/h3&gt;

&lt;p&gt;Next, we'll edit demo.compont.ts using Onchange.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k56jakKF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9616n83fcep8yihh5ffq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k56jakKF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9616n83fcep8yihh5ffq.png" alt="Image description" width="410" height="265"&gt;&lt;/a&gt;&lt;br&gt;
After changing @Input bound class components, ngOnChanges is called. The @Input() decorator binds data from an external source. The @Input property is passed once more when the external source modifies the data in a recognizable way.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C2v5MHc7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mr35ogguq02hji6tw5vk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C2v5MHc7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mr35ogguq02hji6tw5vk.png" alt="Image description" width="555" height="253"&gt;&lt;/a&gt;&lt;br&gt;
The moment we alter the input, ngOnChanges will launch. It also happens when the input data is initialized. SimpleChanges is the sort of optional argument that the hook accepts. Information regarding the modified input limit properties is contained in this value.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X3rmDvMH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nx3ljxif9vjl8z0pprrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X3rmDvMH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nx3ljxif9vjl8z0pprrr.png" alt="Image description" width="554" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ngOnInit
&lt;/h3&gt;

&lt;p&gt;Let's return to the.ts file and proceed using ngOnInit in that sequence!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0KC8lnut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qh3t5murofkhi3hemsov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0KC8lnut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qh3t5murofkhi3hemsov.png" alt="Image description" width="382" height="302"&gt;&lt;/a&gt;&lt;br&gt;
Initializing the component's input bound property (@Input) causes ngOnInit to trigger once. In this illustration, when the demo receives input, the hook does not activate. It activates instead as soon as the data renders the application.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GoFzXCEv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cy3rv4e7wd25qmnyy6f7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GoFzXCEv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cy3rv4e7wd25qmnyy6f7.png" alt="Image description" width="554" height="214"&gt;&lt;/a&gt;&lt;br&gt;
As we can see, when we initialize in the constructor for the demo, the value has the value "demo," but when we update OnInIt, the value has changed to " " in the app.component.&lt;br&gt;
The hook ngOnInit is one-and-done. Its primary concern is initialization.&lt;/p&gt;

&lt;h3&gt;
  
  
  ngDoCheck
&lt;/h3&gt;

&lt;p&gt;Every change detection cycle causes ngDoCheck to trigger. Recognize regular changes. Every time change detection is run, do any action; it will catch DOM events (click, hover), setTimeout, setInterval, or XHR requests. Every time Angular detects a change, ngDoCheck is called, so we must use it carefully because, if implemented improperly, it can lead to performance issues.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dhZxwkgY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u614xozclsxbvg16a39c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dhZxwkgY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u614xozclsxbvg16a39c.png" alt="Image description" width="400" height="384"&gt;&lt;/a&gt;&lt;br&gt;
Every additional change loop that ngDoCheck executes after Angular has finished running and before we change the data is equivalent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next are the hooks for the child components
&lt;/h2&gt;

&lt;p&gt;We will add an h1 tag with the inputText data binding.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OuT3RTeQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tfhuh5yk5thqmnaz7812.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OuT3RTeQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tfhuh5yk5thqmnaz7812.png" alt="Image description" width="395" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ngAfterContentInit
&lt;/h3&gt;

&lt;p&gt;Once the component's content DOM initializes, ngAfterContentInit triggers (first load).&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qvaHY8LZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dp6wne01xxgaqjzil7kw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qvaHY8LZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dp6wne01xxgaqjzil7kw.png" alt="Image description" width="398" height="341"&gt;&lt;/a&gt;&lt;br&gt;
Begin using AppComponent. DemoComponent must be rendered for AppComponent to be finished. The ng-content&amp;gt;/ng-content&amp;gt; element of DemoComponent projects the content contained within its element. The rendered content completes rendering, and ngAfterContentInit fires. Subsequently, DemoComponent completes rendering, followed by AppComponent, and ngAfterContentInit does not fire once more.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4cbZfFx---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tup2rq7wdj1mnz2yl86n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4cbZfFx---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tup2rq7wdj1mnz2yl86n.png" alt="Image description" width="550" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ngAfterContentChecked
&lt;/h3&gt;

&lt;p&gt;DOM targeting change detection cycles are followed by the ngAfterContentChecked event. Developers may now simplify the way the DOM reacts to change detection. Performance problems might result from ngafterContentChecked firing repeatedly.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NJr46TwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fjrxo8l9nkr4wycj8q1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NJr46TwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fjrxo8l9nkr4wycj8q1l.png" alt="Image description" width="353" height="322"&gt;&lt;/a&gt;&lt;br&gt;
Additionally, ngafterContentChecked is called when a component is first started. It occurs immediately following ngafterContentInit. Via change detection, ngafterContentChecked can be re-enabled.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6AEmCMW_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uosjukjthavew1irex46.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6AEmCMW_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uosjukjthavew1irex46.png" alt="Image description" width="552" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ngAfterViewInit
&lt;/h3&gt;

&lt;p&gt;Once the DOM view has finished initializing, ngAfterViewInit begins. View begins to load immediately after content. ngAfterViewInit is frequently used to run a view query with a reference to viewChild or viewChilden.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9fggNYT4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txvhlw2rr3qd9r2gy53n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9fggNYT4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/txvhlw2rr3qd9r2gy53n.png" alt="Image description" width="421" height="157"&gt;&lt;/a&gt;&lt;br&gt;
Render in the aforementioned example begins with AppComponent. The DemoComponent must be rendered for the AppComponent to be finished. The ng-content&amp;gt;/ng-content&amp;gt; element of DemoComponent projects the material contained within its element. When the rendered content and DemoComponent have completed rendering, ngAfterViewInit fires, and after AppComponent has finished rendering, ngAfterViewInit will not fire once again.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vc5NkPT7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/12p2z1namdnzpu5i4p8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vc5NkPT7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/12p2z1namdnzpu5i4p8i.png" alt="Image description" width="542" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ngAfterViewChecked
&lt;/h3&gt;

&lt;p&gt;During each change detection cycle to the component's View, ngAfterViewChecked is triggered. Developers may participate in the process of helping to identify changes impacting the DOM view by using the ngAfterViewChecked function.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GIMTbs2R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/te9eyxfuwhzk4to4b8io.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GIMTbs2R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/te9eyxfuwhzk4to4b8io.png" alt="Image description" width="428" height="228"&gt;&lt;/a&gt;&lt;br&gt;
The manner ngAfterViewChecked will be executed again varies with each cycle.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gx_4Cd5g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0q5qgd3i80nhx179i5uh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gx_4Cd5g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0q5qgd3i80nhx179i5uh.png" alt="Image description" width="549" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ngOnDestroy
&lt;/h3&gt;

&lt;p&gt;ngOnDestroy terminates the lifecycle hooks. But first, we must use a button in the html to add the Destroy function to the app.compont. Because only when a component or directive is destroyed will OnDestroy be invoked.&lt;br&gt;
app.component.html file&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RhiHmLSv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gv5hporsdaxwjad45cyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RhiHmLSv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gv5hporsdaxwjad45cyf.png" alt="Image description" width="392" height="130"&gt;&lt;/a&gt;&lt;br&gt;
app.component.ts file&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2jLlgQ7J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ohk0cuj8vyosik1aqf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2jLlgQ7J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ohk0cuj8vyosik1aqf6.png" alt="Image description" width="359" height="233"&gt;&lt;/a&gt;&lt;br&gt;
And finally demo.component.ts file&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0Mtqhqch--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v05nmxfxhl2m72xiy2ja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0Mtqhqch--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v05nmxfxhl2m72xiy2ja.png" alt="Image description" width="361" height="373"&gt;&lt;/a&gt;&lt;br&gt;
We will have an interface like this&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wia0UN99--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9iaza6ofsvozna4xeq7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wia0UN99--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9iaza6ofsvozna4xeq7c.png" alt="Image description" width="555" height="210"&gt;&lt;/a&gt;&lt;br&gt;
We could see that OnDestroy hasn't been called yet but after clicking the Destroy button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D9CqV6u3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbl86784z43z3ys4ts6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D9CqV6u3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbl86784z43z3ys4ts6j.png" alt="Image description" width="552" height="213"&gt;&lt;/a&gt;&lt;br&gt;
DemoComponent passes false. The evaluation of the *ngIf structural directive is false. ngOnDestroy executes, and ngIf deletes its p&amp;gt; and /p&amp;gt;. Any number of button clicks will cause destruction to be set to false in this process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Order of execution of lifecycle hooks when components are nested
&lt;/h2&gt;

&lt;p&gt;When components are related to one another as parents and children, each component runs its own lifecycle hooks. Whichever is called first, related lifecycle hooks in that component are executed first. Nevertheless, there is a preset executor for each hook, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The parent component starts running before the child component when using ngOnit and ngDoCheck.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When using ngDestroy, the son runs first and then the parent component destroys all of the child components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The child components run first and then the parent component when using ngAfterViewInit and ngAfterViewChecked&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The intriguing series' third and final installment on lifespan hooks is now complete. We appreciate your time and will see you in the next section.&lt;/p&gt;

&lt;p&gt;By,&lt;br&gt;
VNPT Cyber Immunity - VCI&lt;/p&gt;

</description>
      <category>angular</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Model and features in Angular framework</title>
      <dc:creator>VCIDevTeam</dc:creator>
      <pubDate>Tue, 21 Feb 2023 09:31:15 +0000</pubDate>
      <link>https://dev.to/vcldev/model-and-features-in-angular-framework-31f</link>
      <guid>https://dev.to/vcldev/model-and-features-in-angular-framework-31f</guid>
      <description>&lt;p&gt;Continuing the Angular series in web application development, in this part 2 we will go into the working model and features of Angular.&lt;br&gt;
But first I will review the main features of the framework:&lt;br&gt;
•  Template: Allows users to build their components (components) that are highly encapsulated and reusable.&lt;br&gt;
•  Data-Binding:  The feature automatically synchronizes data between the two dimensions of the model and the view when the view has some changes.&lt;br&gt;
•  Service: This can be a certain value, method, or feature that the application needs.&lt;br&gt;
•  Dependency injection: Allows users to embed services or code and put them wherever needed.&lt;br&gt;
First I will go into the structure of an Angular project&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tfi3kShO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mpzxv9m3r40m0a490g4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tfi3kShO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mpzxv9m3r40m0a490g4g.png" alt="Image description" width="624" height="453"&gt;&lt;/a&gt;o    The parent folder (root) includes subfolders e2e, node_module, and src. There are also some external configuration files.&lt;br&gt;
o   Folder e2e: Contains files related to testing. Angular uses the protractor library to perform cross-browser automation testing.&lt;br&gt;
o   Folder node_modules: Where the libraries and downloaded for the angular project. It is managed by NPM, meaning we use NPM to delete and add libraries.&lt;br&gt;
o   Folder src: Where the source is stored when the program runs. This is where the code of the angular application is concentrated.&lt;br&gt;
o   Folder app: Angular CLI creates this folder as the app's parent folder. Angular CLI was created as an example for us to create other components later. In the app folder there are usually:&lt;br&gt;
o   app-routing.module.ts  this file is used for navigation.&lt;br&gt;
o   app.component.css  we define the CSS that the component will use.&lt;br&gt;
o   app.component.html  where we write html files. The view layer that the user can see…&lt;br&gt;
o   app.component.spec.ts  this file is used for testing.&lt;br&gt;
o   app.component.ts (component class): is the file that handles the business, it's like the Controller in Spring Web.&lt;br&gt;
o   app.module.ts  file used to configure the app module.&lt;br&gt;
o   .editorconfig  This file is used to configure if the code editor we use is Visual Studio. I can change the configuration here.&lt;br&gt;
o   .gitignore: Used to describe which files are uploaded to GitHub and which are not.&lt;br&gt;
o   angular.json: Used to reconfigure Angular CLI.&lt;br&gt;
o   browserslist: Which browser versions will be compatible with the angular project.&lt;br&gt;
o   karma.config.js: This file is used to run tests of functions.&lt;br&gt;
o   package.json: This file contains the necessary libraries for the angular project, in addition, if we add a 3rd party library, declare it here.&lt;br&gt;
o   tslint.js: Used to check whether the code is quality or not, is easy to read or maintain, and is standard.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Angular Works
&lt;/h3&gt;

&lt;p&gt;For Angular to render the interface and display it in the browser, we run the command " ng serve -o " (where -o is the option to open the web dev interface in a new browser window).&lt;/p&gt;

&lt;p&gt;We can understand the working mechanism of Angular as follows:&lt;br&gt;
o   Angular will load the index.html file.&lt;br&gt;
o   Then Angular will load the main.ts file.&lt;br&gt;
o   In the main.ts file, Angular will load the parent module app.modules.ts.&lt;br&gt;
o   app.modules.ts loads the parent module component (root) aka root component. In our Angular project, we will have many components. Each component is part of the view visible to the user.&lt;br&gt;
o   In the component module, there will be HTML and CSS (view) files that will then display the website to the user.&lt;/p&gt;

&lt;h3&gt;
  
  
  The first page that Angular calls…
&lt;/h3&gt;

&lt;p&gt;The index.html file is the first file that Angular will call when the application is deployed. The content of the index.html file is as follows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mYjEGixi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdjlqsko0ybexa1yqo2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mYjEGixi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdjlqsko0ybexa1yqo2a.png" alt="Image description" width="624" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we can see there are no javascript and CSS files in index.html. The body tag contains only one tag, app-root. &lt;br&gt;
When we do the ng build, Angular will compile the .ts files of 3rd party libraries and embed them in the index as follows.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Uhum7Ya8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dlvwyliqwc5ey9dgodwx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uhum7Ya8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dlvwyliqwc5ey9dgodwx.png" alt="Image description" width="624" height="219"&gt;&lt;/a&gt;This file can be found in the dist folder. When running the ng build command, Angular will create for us a folder that is dist, it compresses all the project files.&lt;br&gt;
 So we see that angular adds 3 javascript files to the index.html file, these files have the following effect:&lt;br&gt;
o   runtime.22eb52b7ae39d210.js: use webpack to deploy running angular application.&lt;br&gt;
o   polyfills.1abcbd05316f6609.js: cross-browser support…&lt;br&gt;
o   main.1a28e5c215027b7d.js: the code of your application.&lt;/p&gt;

&lt;h3&gt;
  
  
  main.ts
&lt;/h3&gt;

&lt;p&gt;The main.ts file has the following content.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xfl2YlUi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aqvyl0cssvif5dd1shas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xfl2YlUi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aqvyl0cssvif5dd1shas.png" alt="Image description" width="624" height="121"&gt;&lt;/a&gt;&lt;br&gt;
o   We see import platformBrowserDynamic to tell Angular to load the Angular application using the desktop browser.&lt;br&gt;
o   Next we see Angular import AppModule. AppModule is the parent component of the whole Angular application. Angular organizes code in hierarchical modules. The parent module has many child modules, the child module has many child modules in it. So AppModule is the parent module of the Angular application. All Angular applications must have at least one parent module to load first we call it the root module. Then comes the component modules inside.&lt;/p&gt;

&lt;h3&gt;
  
  
  Root Module
&lt;/h3&gt;

&lt;p&gt;Angular will first load the file AppModule. The AppModule file is described below.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c5dY7EHr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ed8wo5c0muq3qg4txwqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c5dY7EHr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ed8wo5c0muq3qg4txwqe.png" alt="Image description" width="624" height="222"&gt;&lt;/a&gt;o    After the root module is invoked, it needs at least one component to be loaded. In this example, we will load the first component, AppComponent. In the Angular project we will have 1 parent component, in the parent component there will be many child components. Below is the uploaded AppComponent declaration.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Rw6tviUL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qy73qdjhqi4ku54dq8ss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rw6tviUL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qy73qdjhqi4ku54dq8ss.png" alt="Image description" width="624" height="23"&gt;&lt;/a&gt;@ NgModule in Angular is used to declare child modules and third parties that will be used in the application…&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ClA-zHac--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/taw1az95aumjfl9bo9wj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ClA-zHac--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/taw1az95aumjfl9bo9wj.png" alt="Image description" width="620" height="179"&gt;&lt;/a&gt;o    imports: Used to embed external modules and third parties that will be shared with the Angular application.&lt;br&gt;
o   declarations: Where will declare parent components, children directives, or services that we use in the Angular project.&lt;br&gt;
o   bootstrap: Indicates which component Angular should load when the Angular Module is loaded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Component
&lt;/h3&gt;

&lt;p&gt;In @NgModule we have bootstrap : [AppComponent] tells Angular to load AppComponent. Code Component is displayed as follows:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F4Qx96fx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/na2snqruql2ujlpwke10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F4Qx96fx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/na2snqruql2ujlpwke10.png" alt="Image description" width="624" height="164"&gt;&lt;/a&gt;o    Create a component consisting of 3 files. 1 is the Class Component file, 2 is the HTML file to display the view, and 3 is the CSS file.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YWJWBM0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zu98hcpvqdw70olef4bd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YWJWBM0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zu98hcpvqdw70olef4bd.png" alt="Image description" width="623" height="85"&gt;&lt;/a&gt;o    Class Component is marked with @Component which has 3 properties selector, templateURL, and styleUrls.&lt;br&gt;
In there:&lt;br&gt;
o   selector is used to indicate which DOM element this component uses. We see the selector named app-root. In any case, if we embed  tag in the template is compiled using AppRootComponent and gets any attached features.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jbPRzs_B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bv3x06z6rz9flk9hfutk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jbPRzs_B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bv3x06z6rz9flk9hfutk.png" alt="Image description" width="624" height="78"&gt;&lt;/a&gt;So this  tag will contain the HTML interface of the App Component. In normal HTML, this tag is not defined by ourselves.&lt;br&gt;
o   templateUrl: in the component, we have specified ‘./app.component.html’ which means will load the template from the app.component.html file in the same directory as the component.&lt;br&gt;
o   styleUrls: Similar to templateUrl, we also specify [‘./app.component.css], this means we will use CSS in the app.component.css file for this component.&lt;br&gt;
When we run ng -server -o we will see the HTML interface defined in the template URL as the file app.component.html&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now I will go through the basic features of Angular&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  - Template
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gmJDXAsa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/832o7eon9x33ks2y7vrn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gmJDXAsa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/832o7eon9x33ks2y7vrn.png" alt="Image description" width="217" height="132"&gt;&lt;/a&gt;•  When views in HTML become complex or are reused in Angular, then templates will solve the problem. Views are usually hierarchical, allowing you to modify or show and hide entire sections of the interface.&lt;br&gt;
• The view hierarchy can include views from components in the same NgModule, but can also include views from components defined in other NgModules.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--llqVS_fW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wfmxdzesuvzcpk1eiu4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--llqVS_fW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wfmxdzesuvzcpk1eiu4t.png" alt="Image description" width="320" height="251"&gt;&lt;/a&gt;Templates are the same as regular HTML, except for containing the Angular template syntax, which changes the HTML based on your application's logic and the state of the application, and the DOM's data.&lt;br&gt;
&lt;em&gt;Example of a template:&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CVFF_mxu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y0atnyl0o9duih0wbc2m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CVFF_mxu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y0atnyl0o9duih0wbc2m.png" alt="Image description" width="624" height="236"&gt;&lt;/a&gt;The template above uses typical HTML elements like div, h3, and p, and also includes Angular template syntax elements like *ngFor, data.name, data.age, (click), [personInfo], . Template syntax elements tell Angular how to render HTML to the screen using the program's data and logic.&lt;/p&gt;

&lt;h3&gt;
  
  
  - Data binding
&lt;/h3&gt;

&lt;p&gt;Databinding is a technique where data is synchronized between the component and the view layer (template HTML file). For example, when the user updates the data in the view layer, Angular also updates that value in the component.&lt;br&gt;
Angular supports two-way data binding, a mechanism for coordinating parts of a framework with parts of a component.&lt;/p&gt;

&lt;h4&gt;
  
  
  + One-way binding
&lt;/h4&gt;

&lt;p&gt;o   One-way binding is understood as data being transmitted one way. Can be from view to component or vice versa from component to view.&lt;br&gt;
o   From component to view we use Property Binding to display data as follows:&lt;br&gt;
o   We use it to display value from component to view.&lt;br&gt;
For example, we have a component&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y4Fu52-o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/23uplkzcklbmo3spiur3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y4Fu52-o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/23uplkzcklbmo3spiur3.png" alt="Image description" width="611" height="207"&gt;&lt;/a&gt;So the data in this component we display in the View as follows:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JxSzqtCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6j4w1d83u8g4wzklxj9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JxSzqtCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6j4w1d83u8g4wzklxj9i.png" alt="Image description" width="614" height="94"&gt;&lt;/a&gt;o    On the contrary, if the view passes data to the component, we use Property binding as follows [disabled]=”isDisabled”&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E3n8L-4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fx8swg19arlk66v9a9wc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E3n8L-4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fx8swg19arlk66v9a9wc.png" alt="Image description" width="613" height="75"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wn_9KSad--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/33nzggcb02z4rnf5db1x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wn_9KSad--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/33nzggcb02z4rnf5db1x.png" alt="Image description" width="624" height="223"&gt;&lt;/a&gt;&lt;br&gt;
o   Event Binding we use to bind events like a mouse click, keyboard eve,nt, etc. To use it, we use the following syntax to perform an event when the mouse clicks on the Save button. It will then call the showStatus function inside the component class.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qo26swC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/70wwb26jhym938p3047f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qo26swC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/70wwb26jhym938p3047f.png" alt="Image description" width="624" height="61"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PBw_2oh8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hxvtjfo7mx1lznn5zzl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PBw_2oh8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1hxvtjfo7mx1lznn5zzl.png" alt="Image description" width="624" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  +Two-way binding
&lt;/h3&gt;

&lt;p&gt;Two-way binding allows application components to share data by listening for events and updating values simultaneously between parent and child components.&lt;br&gt;
Angular's Two-way binding syntax is a combination of square brackets and parentheses [()], and the combined syntax of property binding [] and event binding() is shown below.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HxK_e9b4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fol4qwf0hz0h4r7dxc4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HxK_e9b4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fol4qwf0hz0h4r7dxc4v.png" alt="Image description" width="624" height="82"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s-cf2ALi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tk74nnmo6dx204skc26w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s-cf2ALi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tk74nnmo6dx204skc26w.png" alt="Image description" width="623" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  - Service
&lt;/h3&gt;

&lt;p&gt;Angular Services are pieces of code that we can use over and over from different components. These pieces of code will perform a specific task for a certain intent.&lt;/p&gt;

&lt;p&gt;We can use services for the following purposes:&lt;br&gt;
o   Call the data transfer API from the backend or the outside.&lt;br&gt;
o   Share logic code or data so that components can share.&lt;br&gt;
Service advantages:&lt;br&gt;
o   Easily access methods and properties on other components throughout the project.&lt;br&gt;
o   Easily debugs when there is a problem.&lt;br&gt;
o   Can be reused in multiple modules.&lt;br&gt;
Example of an AppLogService service that logs to the browser console:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--imprmCvb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om9vixyqtn31nu0gwhon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--imprmCvb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om9vixyqtn31nu0gwhon.png" alt="Image description" width="624" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  - Dependency Injection
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mmJtZiM---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/soe670nohzbxotlsx790.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mmJtZiM---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/soe670nohzbxotlsx790.png" alt="Image description" width="624" height="112"&gt;&lt;/a&gt;Dependency Injection (DI) is built-in and is an important part of the core of Angular. Using the Dependency Injection mechanism helps us embed the service into different components or services to access that service class.&lt;br&gt;
Angular creates a new instance of a component class, which determines the service or other dependencies the components need by looking at the constructor parameters.&lt;br&gt;
When Angular detects that a component depends on a specified service, it first checks if the injector has any existing instances of that service.&lt;br&gt;
For example, the process of injecting the AppLogService service in the component's constructor method is below:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n5NE0oDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gk1418oth55ofzvicyq5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n5NE0oDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gk1418oth55ofzvicyq5.png" alt="Image description" width="624" height="60"&gt;&lt;/a&gt;&lt;br&gt;
If an instance of the requested service does not yet exist, the injector creates an instance using the registered provider and adds it to the injector before returning the instance of the service.&lt;br&gt;
Once all the requested services have been initialized and returned, Angular can call the component's constructor with the instances of those services as arguments.&lt;br&gt;
Example using AppLogService in AppDataPersonComponent:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ykj828Bg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fv58drpfwn679psvcd2e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ykj828Bg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fv58drpfwn679psvcd2e.png" alt="Image description" width="619" height="292"&gt;&lt;/a&gt;Above we have the getLog() method that calls the AppLogService service through the Injector specified as logService.&lt;br&gt;
In short, Dependency Injection is used a lot in Angular projects through which we can call the service or code specified earlier.&lt;br&gt;
So that concludes the second part of my series about the Angular framework. Thank you for reading and see you in my next post.&lt;/p&gt;

&lt;p&gt;By,&lt;br&gt;
VNPT Cyber Immunity - VCI&lt;/p&gt;

</description>
      <category>angular</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Angular in app development</title>
      <dc:creator>VCIDevTeam</dc:creator>
      <pubDate>Thu, 19 Jan 2023 01:50:10 +0000</pubDate>
      <link>https://dev.to/vcldev/angular-in-app-development-1jke</link>
      <guid>https://dev.to/vcldev/angular-in-app-development-1jke</guid>
      <description>&lt;p&gt;Why Angular? It's not a framework every programmer knows. Yes, Angular is one of the frameworks everyone knows, so it is one of the frameworks that every programmer must understand and grasp, especially novice programmers. So I write this article for those new to the profession or who have just switched to front-end programming. In the first article, I want to introduce the framework, history, advantages, and when and often used for Angular. So let's get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  So what is Angular?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1z4rqb28tax4jiq1icse.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1z4rqb28tax4jiq1icse.png" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Angular is an open-source framework. It is a JavaScript-based TypeScript development framework that eliminates unnecessary features and code to ensure lighter and faster applications.&lt;br&gt;
Website designers can use HTML as a modeling language and extend the HTML syntax to convey application components. Furthermore, by using Angular, you also won't need to rely on third-party libraries to build dynamic applications.&lt;/p&gt;

&lt;p&gt;Besides, Angular also allows you to create interactive single-page applications (SPA - Single Page Application) through attractive features like:&lt;br&gt;
• Create templates (templates),&lt;br&gt;
• Two-way binding,&lt;br&gt;
• modularity,&lt;br&gt;
• RESTful API (RESTful API access) handling and AJAX handling,&lt;br&gt;
• dependency injection&lt;/p&gt;

&lt;h2&gt;
  
  
  Angular development history
&lt;/h2&gt;

&lt;p&gt;Google developed angular back in 2009. They aim to create a free and open-source framework that the community can use. First, it was called Angular 1 and then changed to AngularJS. Later versions were changed from Angular 2,3,4,5 to the current Angular 14. With each upgrade, Angular will be better fixed and improved to meet problem-solving needs. The complexity of modern platforms.&lt;/p&gt;

&lt;p&gt;I can mention some outstanding features as Angular can create client site applications based on the Model-View-controller (MVC) framework, providing two-way data flow in the Document Object Model and having high compatibility&lt;/p&gt;

&lt;p&gt;Since its inception, Angular has gained many users and supporters. In fact, according to Stack Overflow's 2021 developer survey, it's currently the third most popular web framework among professional developers.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6vensp95c7cyj2r0irx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6vensp95c7cyj2r0irx.png" alt="Image description" width="624" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why choose Angular over another Framework?
&lt;/h2&gt;

&lt;p&gt;Understanding what Angular is not enough for you to choose for your next projects, let's find out the reasons why famous businesses or corporations choose to use Angular.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developed by Google
&lt;/h3&gt;

&lt;p&gt;The first outstanding advantage of Angular is that Google supported and developed it. This worldwide most used search engine site provides Long-Term Support (LTS) for Angular to further expand the Angular environment.&lt;/p&gt;

&lt;p&gt;Google applications all use Angular also they are considered stable. Angular users will have the opportunity to learn from Google's certified Angular experts.&lt;/p&gt;

&lt;h3&gt;
  
  
  User interface
&lt;/h3&gt;

&lt;p&gt;Angular uses HTML to define the user interface of the application. Compared to JavaScript, HTML is a less complex language. It is also a declarative and visual language with directives like ng-app, ng-model, ng-repeat, and form controls.&lt;/p&gt;

&lt;p&gt;With the help of Angular, you don't need to invest time in program flows and decide what content to load first. Angular will handle what you ask. The front end has very HTML-friendly code by easily binds data to this platform.&lt;/p&gt;

&lt;p&gt;Angular is a front-end platform that not only allows the development of modern applications but also allows the creation of high-end animations to enhance the user experience. Angular's API is so intuitive that developers can create complex videos and animations with low code.&lt;/p&gt;

&lt;p&gt;Plus, with smart unit testing frameworks like Jasmine and Karma, you can fix your broken code at any time. Angular has more than 11 built-in testing modules to ensure error-free code.&lt;/p&gt;

&lt;h3&gt;
  
  
  PWA and SPA – High Speed and Ultimate Performance
&lt;/h3&gt;

&lt;p&gt;Angular Progressive Web Apps (PWA) is a cost-effective solution that allows websites to behave like mobile apps. PWA will reduce dependency on the network, greatly improving the user experience on the website.&lt;/p&gt;

&lt;p&gt;Caching in a PWA is efficient and saves bandwidth whenever possible. This reduces the risk of serving outdated content. Furthermore, since it is a website, it can be optimized for SEO. &lt;br&gt;
It also helps to load the first page quickly and improves website performance on mobile devices, because AngularJS can easily run on any device, including mobile.&lt;/p&gt;

&lt;p&gt;To summarize, the strengths of angular include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Code is clearer
&lt;/h3&gt;

&lt;p&gt;Angular uses the TypeScript programming language, which is a superset of JavaScript. It compiles JavaScript but also eases the process of finding and eliminating common problems while coding.&lt;br&gt;
This approach helps developers write cleaner and error-free code and ensures code quality, something that is helpful when investing in enterprise application development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Higher performance
&lt;/h3&gt;

&lt;p&gt;Angular has hierarchical dependency injection, which is much better than AngularJS, where classes are not dependent on each other. It's quite oriented towards external sources, giving more performance to Angular mobile apps. &lt;/p&gt;

&lt;h3&gt;
  
  
  Better error handling
&lt;/h3&gt;

&lt;p&gt;The latest version of Angular, Angular 14, also provides features such as improved error handling for @Output in situations where a property is not initialized.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seamless updates using Angular CLI
&lt;/h3&gt;

&lt;p&gt;Angular CLI (Command-Line Interface) is easy to install and use, is newbie-friendly, offers innovative testing tools and simpler commands, and is supported by different engineers and platforms, making it easy to use. Can update even components with third-party dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Material Design-like Interface
&lt;/h3&gt;

&lt;p&gt;Angular provides pre-built material design via navigation elements, Orm controls, pop-ups, layouts, and data tables. This helps mobile app developers overcome the impact of Google Material Design on mobile app design and design a digital product that users need in the long run.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shorter development time
&lt;/h3&gt;

&lt;p&gt;Angular allows developers to create web applications faster and more efficiently. This is due to the technical benefits that this framework offers, such as comprehensive documentation, the help and support of Google, and a large developer community.&lt;/p&gt;

&lt;h3&gt;
  
  
  Safety
&lt;/h3&gt;

&lt;p&gt;Angular is a popular and trusted platform because it has the backing of a large corporation like Google. Thanks to the community support – and because it is well maintained – Angular is considered by developers to be a reliable and trustworthy platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy testing
&lt;/h3&gt;

&lt;p&gt;Automated testing for each component of the entire Angular web application is very simple because it is divided into several parts. You also don't have to remember the order in which you should test. All you have to do is follow the “one-file-one-module” theory. The structure of the framework is divided into modules, and components, making your application ideal for unit testing. Each code unit is independently tested throughout Angular application development, giving you detailed quality control. &lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-platform development
&lt;/h3&gt;

&lt;p&gt;Angular is a cross-platform framework. Angular Progressive Web Application (PWA) solutions can run on multiple platforms and it widely used this framework in mobile applications. Because they can emulate native applications, more and more businesses are looking to develop cross-platform solutions with Angular.&lt;/p&gt;

&lt;p&gt;Front-end developers have previously used a combination of Ionic and Angular for cross-platform development. But currently, the most popular mix is Angular + NativeScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost-effective
&lt;/h3&gt;

&lt;p&gt;Angular development is cost-effective for several reasons. First, it allows developers to use a single codebase to create a website with multiple versions. Second, they can use a variety of features and functions to create high-quality websites as quickly as possible. Finally, as mentioned above, you can also comfortably test Angular features, which reduces the risk of bugs at the next stage of development (and saves you a lot of time). As a result, developers can avoid testing all modules to detect and resolve any underlying issues. Bug-free apps leave users less frustrated. &lt;/p&gt;

&lt;p&gt;Entrepreneurs who choose Angular often do so because they desire a powerful, cost-effective user interface that allows them to win large audiences and generate money. That's because the framework provides everything entrepreneurs need.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Angular usually utilized?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Angular Progressive Web Applications (PWAs)
&lt;/h3&gt;

&lt;p&gt;Imagine that your user is in an area with no network and wants to find a nearby supply store. Your application may not help them; even if it has all the necessary functions to help locate the store, it may not work if the user is offline. Every time the network goes down at any time during the life of the application, it will stop working.&lt;/p&gt;

&lt;p&gt;Every time your user is disconnected, it can take a few minutes or longer for the initial site to load and set up.&lt;/p&gt;

&lt;p&gt;One of the reasons why to create Progressive Web Applications was to avoid these network interruptions. PWA uses current browser technologies to provide a pleasant user experience, even if you enter an area without cellular transmission or an internet connection. PWAs use service workers to act as proxies that intercept network requests then they cache the response.&lt;/p&gt;

&lt;p&gt;We can download PWAs on the client system. Thus, users can use the app even when their device is offline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Single-Page Applications (SPAs)
&lt;/h3&gt;

&lt;p&gt;SPA is a suitable solution for website development. Users interact with the software application on a single page, which dynamically updates as they use it. SPAs are so well-known because they provide a better user experience (UX) compared with more traditional multi-page apps.&lt;/p&gt;

&lt;p&gt;Angular's routing and data management make it easier to create SPAs while delivering staggering performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interfaces with Beautiful Animations
&lt;/h3&gt;

&lt;p&gt;Incredible User Interface (UI) animations are becoming increasingly popular as a source of competitive advantage for web applications. If leveraged appropriately, you can make your app stand out and make a strong brand statement.&lt;/p&gt;

&lt;p&gt;With Angular, you can create an attractive and intuitive interface that delivers a great user experience. That will help retain users because great UI and UX will drive users to want to return to your app. Given that Angular provides an easy-to-use module for user interactions, coding apps will also be fun for your development team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enterprise Web Applications
&lt;/h3&gt;

&lt;p&gt;No matter how large your project is, Angular will handle your application design now and as it scales. Businesses worldwide expect a durable enterprise web application with cutting-edge code that adheres to established standards.&lt;/p&gt;

&lt;p&gt;The development of these applications must be highly optimized, business-oriented, and easy to understand, to support and accelerate the company's growth.&lt;/p&gt;

&lt;p&gt;The benefits of using Angular for web development for enterprise applications are numerous, and the ability to achieve goals increased when translated into TypeScript. In addition, it has the aforementioned characteristics:&lt;br&gt;
• Simple and easy maintenance &lt;br&gt;
• Autocomplete &lt;br&gt;
• Progressive restructuring &lt;br&gt;
• Fine-tune navigation &lt;br&gt;
• Code Reusability &lt;br&gt;
With all the information you have now, to guarantee that Angular is the right solution for you, let's put it together.&lt;/p&gt;

&lt;h2&gt;
  
  
  In short, when should we use Angular?
&lt;/h2&gt;

&lt;p&gt;Many companies are building digital products and services, but not all of them know when to use Angular. Considering your project's needs and desired user experience, you can resolve to use Angular.&lt;br&gt;
If you are looking for a framework:&lt;br&gt;
• Safe and reliable because of the supportive community and a major technology company (Google). &lt;br&gt;
• Allows easy testing. &lt;br&gt;
• Provides a vast library of verified third-party components. &lt;br&gt;
• Has high scalability potential due to the ease of adding new features. &lt;br&gt;
• Reduces development time as it is a cross-platform tool that allows you to code for many different platforms and provides simple, automated testing. &lt;br&gt;
• Moderately priced while giving the app a familiar feel. &lt;br&gt;
Deciding on an Angular project is a great choice.&lt;/p&gt;

&lt;p&gt;Come full is the end of his first post. In the next part, we will go into the functionality and working models of Angular. Thank you for reading!&lt;/p&gt;

&lt;p&gt;By,&lt;br&gt;
VNPT Cyber Immunity - VCI&lt;/p&gt;

</description>
      <category>programming</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
