Instructor: We run nggs to generate the UI service. Let's define some default properties in this file. We set app color to #343a40. We set app image to link to our logo. We set app title to store, and in our app description, we add a description for a store.
Inside the constructor, we inject private title title and private meta meta, which are both imported from Angular/platform-browser. We define a method called setMetadata, which takes a config parameter. We take the description from the config object, or else use the defaults. We use the same thing for image.
For the title, we want to append the app title if we get one from the object, or otherwise, just show the app title. We invoke this.title.setTitle, and pass in the new title. Next, we create an array called text, in which we define all the meta text that we want to set.
We set description to description. We set team color to this.appColor. Then we add a Twitter cart of type summary, Twitter image, which takes the image, Twitter title, which takes the title, Twitter description, which takes the description.
Then apple-mobile-web-app-capable, set to yes, app-status-bar-style set to black translucent, apple-mobile-web-app-title set to title, apple-touch-startup-image set to image, and lastly, a few properties. ogTitle to title, ogDescription to description, and ogImage, set to image.
The last step is to loop over these tags in the array using for each. Inside that, we take the tag, and we pass it into this.meta.updateTag. In order to use this new method, we open product list components and inject private UI service into the constructor.
We define the method metadata, which takes a product property of type product array. In this method, we invoke this.UI.setMetadata, and we pass an object with the title property set to products, and the description with a nice promotional text.
Then inside the pipe, below our map operator, we add a tap operator, which gets imported from RXGS/operators. We take products, and pass it in this.metadata. When we refresh the page, we can see that the metadata updates.
Let's quickly do the same for product detail component. We inject private UI UI service. We create metadata, which takes product like product. We call into this.UI.setMetadata. We add a title, a description, and set the product image.
We then go to the pipe, append the tap operator and pass product into this.metadata. When we build and deploy the app, we see that the metadata is now updated. When we pass a product URL in the Twitter cart validator, we see that this also enabled social previews.