title: eslint Angular Strict Template Checks should show error
body: <p>We recently migrated to a new project with many angular 11+ applications and libraries. We have <code>angularCompilerOptions.strictTemplates: true</code> set for all the applications.</p>
  <p>The problem is that we have a CI pipeline that checks for formatting and runs eslint, but the strict template checks errors do not get flagged until we do a production build. because of this, we have to build all the affected apps in the CI, and if we change a library component all apps need to be checked and built. this can take hours.</p>
  <p><strong>Is there a way that eslint/tslint can check for any strict template errors without needing to build the app every time?</strong></p>
  <p>Here is our eslint.json:</p>
  <pre class="lang-json prettyprint-override"><code>{
    &quot;extends&quot;: [&quot;../../.eslintrc.json&quot;],
    &quot;ignorePatterns&quot;: [&quot;!**/*&quot;],
    &quot;overrides&quot;: [
      {
        &quot;files&quot;: [&quot;*.ts&quot;],
        &quot;extends&quot;: [&quot;plugin:@nrwl/nx/angular&quot;, &quot;plugin:@angular-eslint/template/process-inline-templates&quot;],
        &quot;parserOptions&quot;: { &quot;project&quot;: [&quot;apps/to-home/tsconfig.*?.json&quot;] },
        &quot;rules&quot;: {
          &quot;@angular-eslint/directive-selector&quot;: [&quot;error&quot;, { &quot;type&quot;: &quot;attribute&quot;, &quot;prefix&quot;: &quot;toh&quot;, &quot;style&quot;: &quot;camelCase&quot; }],
          &quot;@angular-eslint/component-selector&quot;: [&quot;error&quot;, { &quot;type&quot;: &quot;element&quot;, &quot;prefix&quot;: &quot;toh&quot;, &quot;style&quot;: &quot;kebab-case&quot; }]
        }
      },
      { &quot;files&quot;: [&quot;*.html&quot;], &quot;extends&quot;: [&quot;plugin:@nrwl/nx/angular-template&quot;], &quot;rules&quot;: {} }
    ]
  }
  </code></pre>
  <p>and the root json:</p>
  <pre class="lang-json prettyprint-override"><code>{
    &quot;root&quot;: true,
    &quot;ignorePatterns&quot;: [&quot;**/*&quot;],
    &quot;plugins&quot;: [&quot;@nrwl/nx&quot;],
    &quot;overrides&quot;: [
      {
        &quot;files&quot;: [&quot;*.ts&quot;, &quot;*.tsx&quot;, &quot;*.js&quot;, &quot;*.jsx&quot;],
        &quot;extends&quot;: [
          &quot;plugin:@angular-eslint/recommended&quot;,
          &quot;plugin:@angular-eslint/template/process-inline-templates&quot;,
          &quot;plugin:prettier/recommended&quot;
        ],
        &quot;rules&quot;: {
          &quot;@typescript-eslint/no-unused-vars&quot;: [
            &quot;error&quot;,
            {
              &quot;argsIgnorePattern&quot;: &quot;^_&quot;
            }
          ],
          &quot;@typescript-eslint/no-empty-function&quot;: [
            &quot;error&quot;,
            {
              &quot;allow&quot;: [&quot;constructors&quot;]
            }
          ],
          &quot;@nrwl/nx/enforce-module-boundaries&quot;: [
            &quot;error&quot;,
            {
              &quot;enforceBuildableLibDependency&quot;: true,
              &quot;allow&quot;: [
                &quot;@models/*&quot;,
                &quot;@apc-common/**&quot;,
                &quot;@apc-directives/**&quot;,
                &quot;@apc-helpers/**&quot;,
                &quot;@apc-modals/**&quot;,
                &quot;@apc-models/**&quot;,
                &quot;@apc-pipes/**&quot;,
                &quot;@apc-services/**&quot;,
                &quot;@apc-store/**&quot;,
                &quot;@apc-admin/**&quot;,
                &quot;@apc-help/**&quot;,
                &quot;@apc-home/**&quot;,
                &quot;@apc-materials/**&quot;,
                &quot;@apc-materials-deferral-review/**&quot;,
                &quot;@apc-parking/**&quot;,
                &quot;@apc-report/**&quot;,
                &quot;@apc-turnover/**&quot;,
                &quot;@apc-wall-display/**&quot;,
                &quot;@apc-workload/**&quot;
              ],
              &quot;depConstraints&quot;: [
                {
                  &quot;sourceTag&quot;: &quot;scope:server&quot;,
                  &quot;onlyDependOnLibsWithTags&quot;: [&quot;scope:server&quot;, &quot;scope:models&quot;]
                },
                {
                  &quot;sourceTag&quot;: &quot;scope:ui&quot;,
                  &quot;onlyDependOnLibsWithTags&quot;: [&quot;scope:ui&quot;, &quot;scope:shared&quot;, &quot;scope:models&quot;]
                },
                {
                  &quot;sourceTag&quot;: &quot;scope:shared&quot;,
                  &quot;onlyDependOnLibsWithTags&quot;: [&quot;scope:shared&quot;, &quot;scope:models&quot;]
                },
                {
                  &quot;sourceTag&quot;: &quot;scope:models&quot;,
                  &quot;onlyDependOnLibsWithTags&quot;: [&quot;scope:models&quot;]
                }
              ]
            }
          ],
          &quot;@typescript-eslint/no-this-alias&quot;: [
            &quot;error&quot;,
            {
              &quot;allowDestructuring&quot;: true,
              &quot;allowedNames&quot;: [&quot;self&quot;]
            }
          ]
        }
      },
      {
        &quot;files&quot;: [&quot;*.ts&quot;, &quot;*.tsx&quot;],
        &quot;extends&quot;: [&quot;plugin:@nrwl/nx/typescript&quot;],
        &quot;parserOptions&quot;: {
          &quot;project&quot;: &quot;./tsconfig.json&quot;
        },
        &quot;rules&quot;: {}
      },
      {
        &quot;files&quot;: [&quot;*.js&quot;, &quot;*.jsx&quot;],
        &quot;extends&quot;: [&quot;plugin:@nrwl/nx/javascript&quot;],
        &quot;rules&quot;: {}
      }
    ]
  }
  
  </code></pre>