Параметр styles содержит набор стилей, которые будут использоваться компонентом:
При использовании стилей следует учитывать, что они применяются локально только к разметке, управляемой компонентом. Например, если на странице будут элементы вне области управления компонентом, то к ним уже не будут применяться стили. Например:
Селектор :host ссылается на элемент, в котором хостится компонент. То есть в данном случае это элемент <my-app></my-app>. И селектор :host как раз позволяет применить стили к этому элементу:
Если стилей много, то код компонента может быть слишком раздут, и в этом случае их вынести в отдельный файл css. Так, создадим в одной папке с классом компонента (который по умолчанию располагается в папке app) новый файл app.component.css со следующим содержимым:
Параметр styleUrls позволяет указать набор файлов css, которые применяются для стилизации. В данном случае предполагается, что файл css располагается в проекте в папке app.
Похожим образом мы можем вынести шаблон в отдельный файл html. Также в папке app создадим новый файл app.component.html со следующим кодом:
1234
<h1>Hello Angular 7</h1><p>
Angular 7 представляет модульную архитектуру приложения
</p>
То есть здесь определен весь тот же код, что ранее был в шаблоне компонента. И теперь изменим сам компонент:
За счет выноса кода css и html код самого компонента стал чище и проще. Однако если мы производим сборку приложения через webpack, то мы можем столкнуться с проблемами. Нам надо указать сборщику, как загружать эти файлы html и css. И для этого можно воспользоваться загрузчиками html-loader и raw-loader.
В частности, в начале необходимо загрузить пакеты загрузчиков в проект через npm. Для этого можно определить в файле package.json следующие пакеты:
varpath=require('path');varwebpack=require('webpack');varUglifyJSPlugin=require('uglifyjs-webpack-plugin');// плагин минимизацииmodule.exports={entry:{polyfills:'./src/polyfills.ts',app:'./src/main.ts',},output:{path:path.resolve(__dirname,'./public'),// путь к каталогу выходных файлов — папка publicpublicPath:'/public/',filename:'[name].js',// название создаваемого файла},resolve:{extensions:['.ts','.js'],},module:{rules:[//загрузчик для ts{test:/\.ts$/,// определяем тип файловuse:[{loader:'awesome-typescript-loader',options:{configFileName:path.resolve(__dirname,'tsconfig.json'),},},'angular2-template-loader',],},{test:/\.html$/,loader:'html-loader',},{test:/\.css$/,include:path.resolve(__dirname,'src/app'),loader:'raw-loader',},],},plugins:[newwebpack.ContextReplacementPlugin(/angular(\\|\/)core/,path.resolve(__dirname,'src'),// каталог с исходными файлами{}// карта маршрутов),newUglifyJSPlugin(),],};