{"id":7223,"date":"2021-06-02T05:29:03","date_gmt":"2021-06-02T03:29:03","guid":{"rendered":"http:\/\/www.unimedia.tech.mialias.net\/angular-12-features-deprecations-migration\/"},"modified":"2024-01-09T11:09:24","modified_gmt":"2024-01-09T10:09:24","slug":"angular-12-features-deprecations-migration","status":"publish","type":"post","link":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/","title":{"rendered":"Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n"},"content":{"rendered":"\r\n<p>En este post, vamos a <a href=\"https:\/\/www.unimedia.tech\/software-development\/\">discutir<\/a>, las nuevas caracter\u00edsticas de la \u00faltima versi\u00f3n Angular 12, APIs obsoletos y la forma de migraci\u00f3n 11<\/p>\r\n\r\n\r\n\r\n<p>Tambi\u00e9n te puede interesar: <a href=\"https:\/\/www.unimedia.tech\/2021\/04\/28\/realtime-with-serverless-using-websocket-in-aws\/\">&#8220;Tiempo real con serverless usando Websocket en AWS&#8221;<\/a><\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Caracter\u00edsticas:<\/h2>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\"><strong>Coalescencia nula<\/strong>:<\/h3>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p><strong>Nullish Coalescing<\/strong> se introdujo por primera vez en Typescript y <a href=\"https:\/\/www.unimedia.tech\/dedicated-development-teams\/\">los desarrolladores <\/a>pudieron escribir el c\u00f3digo con un enfoque m\u00e1s limpio.<\/p>\r\n\r\n\r\n\r\n<p>Y por lo tanto, ahora Angular plantilla de vista tambi\u00e9n es compatible con Nullish Coalescencia de Angular 12.<\/p>\r\n\r\n\r\n\r\n<p>Puede considerar esta funci\u00f3n como una forma de &#8220;recurrir&#8221; a un valor por defecto cuando trabaje con <code>null<\/code> o <code>undefined<\/code>. Cuando escribimos c\u00f3digo como<\/p>\r\n\r\n\r\n\r\n<p>Por ejemplo:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>{{ foo ?? bar() }}<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Esta es una nueva forma de decir que el valor <code>foo<\/code> se utilizar\u00e1 cuando est\u00e9 &#8220;presente&#8221;; pero cuando sea <code>null<\/code> o <code>undefined<\/code>, calcular\u00e1 <code>bar()<\/code> en su lugar.<\/p>\r\n\r\n\r\n\r\n<p>De nuevo, el c\u00f3digo anterior es equivalente al siguiente.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>{{ foo !== null &amp;&amp; foo !== undefined ? foo : bar() }}<\/code><\/pre>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Formularios: introducir validadores de m\u00ednimo y m\u00e1ximo<\/h3>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>Si tengo un <code><em>&lt;input type=\"number\" min=\"0\" [(ngModel)]=\"val\" #num=\"NgModel\"&gt;<\/em><\/code>, deber\u00eda poder asumir que <code>num.valid<\/code> ser\u00e1 <code>false<\/code> cuando el valor de la entrada sea <code>-10<\/code>.<\/p>\r\n\r\n\r\n\r\n<p>Se trata de una suposici\u00f3n b\u00e1sica y l\u00f3gica que los desarrolladores <em>har\u00e1n<\/em>, y hacer lo contrario, <em>desde el principio<\/em>, sin requerir una directiva adicional de &#8220;soluci\u00f3n&#8221;, etc., es un flaco favor para ellos.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p><strong>Correcci\u00f3n:<\/strong> Anteriormente los atributos <code><em>min<\/em><\/code> y <code><em>max<\/em><\/code> definidos en <code><em>&lt;input type=\"number\"&gt;<\/em><\/code> eran ignorados por el m\u00f3dulo Forms. Ahora, la presencia de estos atributos activar\u00eda la l\u00f3gica de validaci\u00f3n m\u00edn\/m\u00e1x (en caso de que las directivas <code>formControl<\/code>, <code>formControlName<\/code> o <code><em>ngModel<\/em><\/code> tambi\u00e9n est\u00e9n presentes en una entrada dada) y el estado correspondiente del control del formulario lo reflejar\u00eda.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">A\u00f1adido el m\u00e9todo historyGo al servicio Location:<\/h3>\r\n\r\n\r\n\r\n<p><code><em>historyGo<\/em><\/code>que permitir\u00e1 al usuario navegar a una p\u00e1gina espec\u00edfica del historial de sesiones identificada por su<br \/>posici\u00f3n relativa a la p\u00e1gina actual.<\/p>\r\n\r\n\r\n\r\n<p>Documentaci\u00f3n: https:\/\/angular.io\/api\/common\/Location#historyGo<\/p>\r\n\r\n\r\n\r\n<p><strong>Ejemplo: <\/strong><\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p><code><em>location.historyGo(2)<\/em><\/code> avanza dos p\u00e1ginas y <code><em>location.historyGo(-2)<\/em><\/code> retrocede dos p\u00e1ginas. Cuando intentamos ir m\u00e1s all\u00e1 de lo almacenado en la sesi\u00f3n del historial, nos quedamos en la p\u00e1gina actual. El mismo comportamiento se produce cuando <code>relativePosition<\/code> es igual a 0<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>location.historyGo(2)<\/code><\/pre>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Soporte APP_INITIALIZER trabajo con observable<\/h3>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>En Angular v12 podr\u00e1s devolver directamente un Observable. Veamos c\u00f3mo:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code><strong>import<\/strong> { APP_INITIALIZER, FactoryProvider } <strong>from<\/strong> '@angular\/core';\r\n<strong>import<\/strong> { ConfigService } <strong>from<\/strong> \".\/config.service\";\r\n\r\n<strong>function<\/strong> loadConfigFactory(configService: ConfigService) {\r\n  <em>\/\/ Easy as pie  <\/em>\r\n  <strong>return<\/strong> () <strong>=&gt;<\/strong> configService.getConfig(); <em>\/\/  <\/em>\r\n\r\n  <em>\/\/ How you might've done it \u201cbefore\u201d<\/em>\r\n  <em>\/\/ return () =&gt; configService.getConfig().toPromise();<\/em>\r\n}\r\n\r\n<strong>export<\/strong> <strong>const<\/strong> loadConfigProvider: FactoryProvider <strong>=<\/strong> {\r\n  provide: APP_INITIALIZER,\r\n  useFactory: loadConfigFactory,\r\n  deps: [ConfigService],\r\n  multi: <strong>true<\/strong>\r\n};\r\n<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Una cosa importante a tener en cuenta es que el Observable <strong>debe completarse<\/strong>, de lo contrario el proceso de arranque no continuar\u00e1.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Admite metadatos de solicitud de cliente http para su uso en interceptores:<\/h3>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>Anteriormente, cuando se utilizaba un interceptor http no se pod\u00edan pasar metadatos sobre la solicitud al interceptor<\/p>\r\n\r\n\r\n\r\n<p>Ahora, el contexto Http almacena valores arbitrarios definidos por el usuario y garantiza la seguridad de tipos sin conocer realmente los tipos. Cuenta con el respaldo de <code>Map<\/code> y garantiza que las llaves no choquen.<\/p>\r\n\r\n\r\n\r\n<p><strong>Documentaci\u00f3n:<\/strong> <a href=\"https:\/\/angular.io\/api\/common\/http\/HttpContext\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/angular.io\/api\/common\/http\/HttpContext<\/a><\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>@Injectable()\r\nexport class UsersService {\r\n  constructor(private http: HttpClient) {}\r\n  \r\n  getUsers() {\r\n    return this.http.get('....', {\r\n      context: return new HttpContext().set('cacheRequest', true); \/\/ We have added context here\r\n    })\r\n  }\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Desactivaci\u00f3n de animaciones mediante BrowserAnimationsModule.withConfig<\/h3>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>Antes, la \u00fanica forma de desactivar las animaciones era proporcionando la direcci\u00f3n <code>NoopAnimationsModule<\/code>, que no permit\u00eda desactivarlas en funci\u00f3n de la informaci\u00f3n en tiempo de ejecuci\u00f3n.<\/p>\r\n\r\n\r\n\r\n<p>Estos cambios a\u00f1aden soporte para desactivar animaciones basadas en informaci\u00f3n en tiempo de ejecuci\u00f3n utilizando <code>BrowserAnimationsModule.withConfig({disableAnimations: true})<\/code>.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p><strong>Documentaci\u00f3n:<\/strong> <a href=\"https:\/\/angular.io\/api\/platform-browser\/animations\/BrowserAnimationsModuleConfig\">https:\/\/angular.io\/api\/platform-browser\/animations\/BrowserAnimationsModuleConfig<\/a><\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">APIs obsoletas:<\/h2>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Compatibilidad con IE11:<\/h3>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>La compatibilidad de Angular con Internet Explorer 11 (IE11) de Microsoft est\u00e1 obsoleta y se eliminar\u00e1 en Angular v13.<\/p>\r\n\r\n\r\n\r\n<p><strong>Documentaci\u00f3n:<\/strong> https:\/\/angular.io\/guide\/deprecations#internet-explorer-11<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Nodo versi\u00f3n 10 o anterior:<\/h3>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>Ya no puedes usar Angular con Node.js versi\u00f3n 10 o anterior.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Migraci\u00f3n a Angular 12<\/h2>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>Primero comprueba la versi\u00f3n de Angular de tu aplicaci\u00f3n: Desde el directorio de tu proyecto, utiliza el comando <code><em>ng version<\/em><\/code>. Para que pueda seleccionar la versi\u00f3n en la gu\u00eda de actualizaci\u00f3n interactiva dada por Angular.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>Angular proporciona instrucciones completas en la <a href=\"https:\/\/update.angular.io\/\">gu\u00eda interactiva<\/a> para que pueda seleccionar las opciones basadas en su aplicaci\u00f3n y le dar\u00e1 los pasos y la gu\u00eda para la actualizaci\u00f3n.<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/image-1-20.png\" alt=\" clase\" \/><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Unimedia Technology<\/h2>\r\n\r\n\r\n\r\n<p>Aqu\u00ed en <a href=\"https:\/\/www.unimedia.tech\/\">Unimedia Technology<\/a> tenemos un equipo de<strong> Cloud Native Developers<\/strong> que pueden ayudarte a desarrollar tus Aplicaciones AWS y Azure m\u00e1s complejas.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>En este post, vamos a discutir, las nuevas caracter\u00edsticas de la \u00faltima versi\u00f3n Angular 12, APIs obsoletos y la forma de migraci\u00f3n 11 Tambi\u00e9n te puede interesar: &#8220;Tiempo real con serverless usando Websocket en AWS&#8221; Caracter\u00edsticas: &nbsp; &nbsp; Coalescencia nula: &nbsp; Nullish Coalescing se introdujo por primera vez en Typescript y los desarrolladores pudieron escribir [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":6636,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[198,220],"tags":[],"class_list":["post-7223","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-angular-es","category-technical-guides-es"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.6 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n - Unimedia Technology<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n\" \/>\n<meta property=\"og:description\" content=\"En este post, vamos a discutir, las nuevas caracter\u00edsticas de la \u00faltima versi\u00f3n Angular 12, APIs obsoletos y la forma de migraci\u00f3n 11 Tambi\u00e9n te puede interesar: &#8220;Tiempo real con serverless usando Websocket en AWS&#8221; Caracter\u00edsticas: &nbsp; &nbsp; Coalescencia nula: &nbsp; Nullish Coalescing se introdujo por primera vez en Typescript y los desarrolladores pudieron escribir [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/\" \/>\n<meta property=\"og:site_name\" content=\"Unimedia Technology\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.linkedin.com\/company\/unimedia-technology\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-02T03:29:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-09T10:09:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/Copy-of-websocket-serverless-ts-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1120\" \/>\n\t<meta property=\"og:image:height\" content=\"660\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Unimedia\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@UnimediaCTO\" \/>\n<meta name=\"twitter:site\" content=\"@UnimediaCTO\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Unimedia\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n - Unimedia Technology","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/","og_locale":"es_ES","og_type":"article","og_title":"Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n","og_description":"En este post, vamos a discutir, las nuevas caracter\u00edsticas de la \u00faltima versi\u00f3n Angular 12, APIs obsoletos y la forma de migraci\u00f3n 11 Tambi\u00e9n te puede interesar: &#8220;Tiempo real con serverless usando Websocket en AWS&#8221; Caracter\u00edsticas: &nbsp; &nbsp; Coalescencia nula: &nbsp; Nullish Coalescing se introdujo por primera vez en Typescript y los desarrolladores pudieron escribir [&hellip;]","og_url":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/","og_site_name":"Unimedia Technology","article_publisher":"https:\/\/www.linkedin.com\/company\/unimedia-technology\/","article_published_time":"2021-06-02T03:29:03+00:00","article_modified_time":"2024-01-09T10:09:24+00:00","og_image":[{"width":1120,"height":660,"url":"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/Copy-of-websocket-serverless-ts-4.png","type":"image\/png"}],"author":"Unimedia","twitter_card":"summary_large_image","twitter_creator":"@UnimediaCTO","twitter_site":"@UnimediaCTO","twitter_misc":{"Escrito por":"Unimedia","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/#article","isPartOf":{"@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/"},"author":{"name":"Unimedia","@id":"https:\/\/www.unimedia.tech\/es\/#\/schema\/person\/3a250aa22526d5c9ff6bc95bb380a5dd"},"headline":"Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n","datePublished":"2021-06-02T03:29:03+00:00","dateModified":"2024-01-09T10:09:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/"},"wordCount":719,"publisher":{"@id":"https:\/\/www.unimedia.tech\/es\/#organization"},"image":{"@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/Copy-of-websocket-serverless-ts-4.png","articleSection":["Angular","Technical Guides"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/","url":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/","name":"Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n - Unimedia Technology","isPartOf":{"@id":"https:\/\/www.unimedia.tech\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/#primaryimage"},"image":{"@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/Copy-of-websocket-serverless-ts-4.png","datePublished":"2021-06-02T03:29:03+00:00","dateModified":"2024-01-09T10:09:24+00:00","breadcrumb":{"@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/#primaryimage","url":"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/Copy-of-websocket-serverless-ts-4.png","contentUrl":"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/Copy-of-websocket-serverless-ts-4.png","width":1120,"height":660,"caption":"angular 12 release update"},{"@type":"BreadcrumbList","@id":"https:\/\/www.unimedia.tech\/es\/angular-12-features-deprecations-migration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.unimedia.tech\/es\/"},{"@type":"ListItem","position":2,"name":"Angular 12: Caracter\u00edsticas, Depreciaciones y Migraci\u00f3n"}]},{"@type":"WebSite","@id":"https:\/\/www.unimedia.tech\/es\/#website","url":"https:\/\/www.unimedia.tech\/es\/","name":"Unimedia Technology","description":"Your software development partner","publisher":{"@id":"https:\/\/www.unimedia.tech\/es\/#organization"},"alternateName":"Unimedia Tech","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.unimedia.tech\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.unimedia.tech\/es\/#organization","name":"Unimedia Technology","alternateName":"Unimedia Tech","url":"https:\/\/www.unimedia.tech\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.unimedia.tech\/es\/#\/schema\/logo\/image\/","url":"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/cloud_border-3.png","contentUrl":"https:\/\/www.unimedia.tech\/wp-content\/uploads\/2023\/12\/cloud_border-3.png","width":403,"height":309,"caption":"Unimedia Technology"},"image":{"@id":"https:\/\/www.unimedia.tech\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/unimedia-technology\/","https:\/\/x.com\/UnimediaCTO","https:\/\/www.instagram.com\/unimedia.technology\/"]},{"@type":"Person","@id":"https:\/\/www.unimedia.tech\/es\/#\/schema\/person\/3a250aa22526d5c9ff6bc95bb380a5dd","name":"Unimedia","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.unimedia.tech\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5901fd1c4628e2b48ffd4e47324e8fe0751b39e556a167f078471d4c4bec0f6f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5901fd1c4628e2b48ffd4e47324e8fe0751b39e556a167f078471d4c4bec0f6f?s=96&d=mm&r=g","caption":"Unimedia"}}]}},"_links":{"self":[{"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/posts\/7223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/comments?post=7223"}],"version-history":[{"count":0,"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/posts\/7223\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/media\/6636"}],"wp:attachment":[{"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/media?parent=7223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/categories?post=7223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unimedia.tech\/es\/wp-json\/wp\/v2\/tags?post=7223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}